2-2. 주석 및 printf 함수의 이해
1-0. 주석의 필요성
* 주석(comment) : 프로그램 내에 삽입된 메모. 컴파일의 대상에서 제외가 되기 때문에 주석의 유무는 프로그램의 실행결과에 영향을 미치지 않는다.
C언어가 사람이 이해하기 쉬운 언어라 할지라도, 내용을 분석하는 데는 상당한 시간이 걸린다. 이러한 문제점을 최소화하기 위한 목적으로 주석이라는 것이 존재한다. 주석을 다는 것은 프로그램을 분석하는 이들을 배려하는 수단 뿐만 아니라 동시에 프로그램을 구현한 본인 스스로를 배려하는 수단도 된다. ==> 주석은 선택이 아닌 필수다!
1-1. 행 단위 주석
C언어에서 주석을 다는 방식은 두 가지가 있는데, 첫번째 방식은 행 단위로 주석처리 하는 방식이다.
1 2 3 | // 주석처리 된 문장1 // 주석처리 된 문장2 // 주석처리 된 문장3 | cs |
1-2. 블록 단위 주석
두번째 방식은 블록 단위로 주석처리하는 방식이다.
이는 주석의 시작과 끝을 명시하여 그 내부에 있는 내용을 주석처리하는 방식인데, 시작은 /*으로 명시하고 끝은 */으로 명시한다.
1 2 3 4 5 6 7 | /* 주석처리 된 문장 */ /* 주석 처리된 문장1 주석 처리된 문장2 주석 처리된 문장3 */ | cs |
1-3. 주석처리에 있어서의 주의점
블록 단위 주석은 중첩될 수 없다. 아래의 주석을 통해 살펴보자.
1 2 3 4 5 | /* 주석 처리된 문장1 /* 주석 처리된 문장2 */ 주석 처리된 문장3 */ | cs |
1행의 /*을 시작으로 주석이 시작된다. 이제 */을 만나는 곳까지 주석으로 처리되는데, 3행에서 */을 처음만난다.
따라서 2,3행이 주석으로 처리되고, 5행의 */는 잘못 삽입된 주석의 끝으로 해석되어서 컴파일 오류가 나타난다.
그러나 다음과 같이 행 단위 주석은 블록 단위 주석의 내부에 포함될 수 있다.
1 2 3 4 5 | /* 주석 처리된 문장1 // 주석 처리된 문장2 주석 처리된 문장3 */ | cs |
2-1. printf함수를 이용한 정수의 출력과 서식문자
printf 함수를 이용하면 문자열 이외의 데이터를 다양한 형태로 출력하는 것이 가능하다.
아래의 예제를 살펴보자.
1 2 3 4 5 6 7 8 9 | #include <stdio.h> int main(void) { printf("hello world!\n"); printf("%d\n", 1234); printf("%d %d\n", 10, 20); return 0; } | cs |
<실행 결과>
hello world!
1234
10 20
5행을 보면 앞에서도 살펴봤듯이 다음 사실을 알 수 있다.
"printf 함수는 첫 번째 인자로 전달된 문자열을 출력한다."
5행에서는 "hello world!\n" 라는 문자열이 printf 함수의 인자로 전달되고, 이를 출력한다.
6행도 마찬가지로 printf 함수의 첫 번째 인자로 문자열을 전달하면서, 이의 출력을 요청하는 문장이다.
여기서 첫 번째 인자는 "%d\n" 인데, 여기서 %d와 같은 문자를 가리켜 '서식문자(conversion specifier)'이라 하는데, 이는 출력의 형태를 지정하는 용도로 사용된다. 그런데 출력의 형태를 지정하려면 출력의 대상이 있어야 되는데, 6행을 보면 두 번째 인자가 있음을 알 수 있다. (함수호출 시 전달되는 인자는 , 로 구분된다.) 바로 이 두 번째 전달인자가 출력의 대상이 된다.
참고로 여기서 %d가 지정하는 출력의 형태는 '10진수 정수형태의 출력'을 의미하고, 이후에 서식문자에 대한 정리를 하겠다.
7행은 문자열 안에 서식문자 %d가 두 개 존재하므로 출력대상이 두 번째, 세 번째 인자로 각각 전달되고 있다.