반응형

C 프로그램은 함수로 만들어지며 함수일정한 기능을 수행하는 코드 단위 입니다. main함수만으로만 이루어진 간단한 프로그램들도 있습니다. 이전 시간에 말했듯이 startup code가 main함수를 호출해서 프로그램이 실행되게 하므로 main함수는 프로그램의 시작을 의미하며 꼭 필요한 함수입니다.

 

 

함수 구조

함수는 head와 body로 이뤄져 있습니다. 

head는 함수 원형(Function prototype)이라고 하며 함수의 이름과 필요한 데이터등을 표시합니다. body는 중괄호 안에 작성하며 main함수에서는 return 0; 으로 프로그램을 종료시킵니다. 더욱 자세한 설명은 나중에 하도록 하겠습니다.

주석문 : line 1 ~ 5

주석문은 소스 코드를 설명하는 내용을 담고 방법은 두 가지가 있습니다. 

  • /* ~ */ : /*과 */ 사이에 있는 모든 내용을 주석 처리합니다. 여러 행을 한 번에 처리할 때, 혹은 행의 중간 부분을 주석처리할 때 쓰입니다.
  • // : //부터 해당 줄의 끝까지 주석처리 합니다.

주석문은 Preprocess 단계에서 모두 떨어져 나가게 됩니다. 하지만 사람이 읽고 수정하기 쉽도록 설명해 놓는 것이 좋습니다.

 

함수에서 실행하는 일 : line 7 ~ 11

{ ... } 가 위 함수의 body입니다. 이 부분에 이 함수가 할 일을 코딩(작성)합니다. 이 때 지켜야 하는 규칙이 있습니다.

 

규칙

  1. 세미콜론(;)을 사용해서 문장의 끝을 알린다.
  2. 한 줄에 한 문장씩 작성한다.
  3. 일정한 간격으로 들여 쓴다.

 

문자열 출력

화면에 데이터를 출력할 때는 printf 함수를 사용합니다. print formatted라는 뜻을 가지고 있으며 일정한 형식에 따라 출력을 수행합니다.

 

 

실행 결과

I'm so sorryBut I love you
다 거짓말

 

printf 함수 안에 큰 따옴표("") 안에 있는 문자열이 출력이 됐습니다. 이 것이 printf 함수의 가장 기초적인 사용법 입니다. 그런데 결과물이 조금 이상합니다. 우리는 세 줄을 적었는데 결과물은 두 줄이 출력 됐습니다. 차이점이 보이시나요? 네 바로 \n의 존재 여부입니다.

 

처음 시간에 제가 말한 것이 기억나나요? 네 정확한 명령을 내려야 한다고 했었죠. 바로 그 말입니다. printf 함수는 큰따옴표 안에 있는 것은 모두 출력했습니다. \n을 But I love you 옆에 추가로 작성해서 줄을 바꿔준 것입니다. \n에 대해서는 조금 있다가 소개해드리겠습니다.

 

1번 line에 #include <stdio.h>가 보이시나요? 네 저번 시간에 잠깐 소개했던 Preprocess Directive (전처리 지시자)입니다. stdio.h는 printf 함수를 사용할 수 있게 만들어줍니다. standard input ouput을 의미하며 C언어에서 기본으로 사용하는 입출력 함수가 들어있습니다.

 

 

제어 문자 출력

위에서 잠깐 \n이 나왔던 것을 기억하실 겁니다. 이번에 그런 역할들을 하는 제어 문자들을 소개해드리겠습니다.

 

제어문자는 문자는 아니지만 출력 방식에 영향을 주는 문자를 의미합니다. \n이 줄을 바꿔주는 것처럼 말이죠. 제어문자는 백슬래시(\)와 함께 쓰입니다. 다음은 제어문자의 종류들입니다.

제어문자 명칭 기능 비고
\n new line  다음 줄로 이동  
\b backspace 한 칸 왼쪽으로 이동 이동 후 쓰여진 문자로 교체
ex) Good\bt > Goot
\r carriage return 맨 앞으로 이동 이동 후 쓰여진 문자로 교체
ex) E Love\rI > I Love
ex) E Love\rII > IILove
\a alert 벨소리  

 

 

정수와 실수 출력

printf 함수는 기본적으로 문자열을 출력합니다. 따라서 그 외의 형태를 출력할 때는 변환 문자를 사용해서 문자열로 변환해주는 과정이 필요합니다. 변환 문자는 데이터의 형태에 따라 다릅니다. 정수는 %d, 실수는 %lf입니다. 다음 예제를 통해 사용법에 대해서 자세히 설명해드리겠습니다.

 

 

실행 결과

10
3.140000
3.1
3.1600000000
33와 27의 합은 60입니다.
3.1 - 2.2 = 0.9

 

큰따옴표("") 안에 출력할 문자열과 변환 문자를 작성해준 뒤에 콤마(,)로 구분하여 변환 문자에 대응되는 데이터를 나열합니다. 그렇게 하면 위와 같이 printf 함수는 문자열 내의 변환 문자를 해당 데이터로 대체하여 출력합니다.

 

그 다음에 6,7 line을 보시면 %와 lf 사이에 .1 과 .10이 보이실 겁니다. 이미 눈치 채셨겠지만 이것들은 출력할 소수점 자리 수입니다. .1을 하면 소수점 한 자리까지만 출력하는 것이죠. 잘리는 값은 반올림해서 출력됩니다. 위 코드를 보고 의아해서 다시 테스트 해보니 5까지는 반올림이 안 되고 6부터 반올림이 되네요? 오잉 또잉

 

변환 문자가 여러 개 일 때는 왼쪽 변환 문자부터 차례대로 작성하여 나열해 주면 됩니다. 수식을 적어주시면 수식의 결과물이 출력이 될 것입니다.

 

 

반응형