출력 1

동서고금을 떠나, 말을 배운 아기가 가장 처음 하는 말은 '엄마'라고 합니다. 믿거나 말거나. 프로그래밍 세계에서도 말하는 법을 배웠을 때 '엄마' 대신 하는 말이 있습니다. 바로 'Hello, world!'입니다. 자, 따라해 보세요. Hello, world!

#include <stdio.h>
int main() {
      printf("Hello, world!\n");	//Hello, world!를 출력하고 줄 바꿈
      return 0;
}

Hello, world!

C 언어는 위에서 아래로 실행됩니다. 자, 맨 윗줄부터 조금씩 읽어 봅시다. #include <stdio.h>stdio.h를 포함시키라는 의미입니다. C 언어에서 stdio.h입출력을 담당하는 헤더로, 사람으로 치면 눈과 입에 해당합니다.

그다음 줄은 int main()입니다. '정수 값을 반환하고 아무런 인자도 받지 않는 함수 main를 정의하겠습니다'라는 의미인데, 지금은 별로 알 필요가 없습니다.

main 함수는 수많은 함수 중 가장 특별한 함수로, 모든 C 프로그램에는 main 함수가 반드시 포함되어야 하며, 프로그램이 시작되면 main 함수가 실행됩니다. 이 것도 뒤의 '함수' 파트에서 자세히 다룰 것입니다.

함수 안의 내용은 { 중괄호 }로 둘러싸여 있습니다. 여는 괄호의 갯수와 닫는 괄호의 갯수는 반드시 일치해야 합니다.

printf 함수는 문자열을 받아 출력하는 함수입니다. 문자열은 "큰 따옴표"로 둘러싸인 것입니다. 문자열의 진정한 의미는 뒤의 '포인터' 부분에서야 알 수 있지만, 일단은 현재의 코드에 집중해 봅시다. 우리는 printf 함수에 "Hello, world!\n"라는 문자열을 넘겨주었는데, 이렇게 하면 printf 함수는 Hello, world!를 출력하게 됩니다. 뒤의 \n은 줄을 바꾸라는 의미입니다. 이런 것을 '이스케이프 시퀀스'라고 하며, 다음과 같은 것들이 있습니다.

형식 의미하는 것 형식 의미하는 것
\n 줄 바꿈 \' 작은 따옴표
\t 가로 Tab \" 큰 따옴표
\v 세로 Tab \\ \
\b 백 스페이스 \OOO 8진수 아스키 코드
\r 캐리지 리턴 \xOO 16진수 아스키 코드
\f 폼 피트 \xOOOO 16진수 유니 코드
\a 경고 벨 %% %



 읽고 넘어가기

  • 환경에 따라 백 슬래시가 \로 보일 수 있습니다.
  • //로 시작하는 내용은 주석으로, 컴파일러에게 읽히지 않도록 한 부분입니다. '주석' 파트에서 자세히 다룹니다.



마지막 return 0함수가 문제없이 실행되었음을 나타냅니다. 진짜 의미는 '0을 반환'이지만, 아직 함수가 값을 반환한다는 것에 대해 알지 못하므로, '그렇구나' 하고 넘어가도록 합시다. main에서 return 0을 만나면 프로그램은 종료됩니다.

눈치가 빠른 사람이라면 코드의 뒤에 세미콜론;이 붙어있음을 눈치 챘을 것입니다. 함수의 실행, 값의 대입, 값의 반환(return) 등의 명령어 뒤에는 반드시 세미콜론을 사용해 줄을 구분해야만 합니다.

C 언어의 다른 특징 중 하나는 구분만 할 수 있다면 단어와 기호들의 띄어쓰기와 줄 바꿈이 의미를 갖지 않는다는 것입니다. #으로 시작하는 줄은 예외입니다. 즉,

#include <stdio.h>
int main(){printf("Hello, world!\n");return 0;}

이 코드도,

#include <stdio.h>


int main()
{
      printf(
                        "Hello, world!\n"

);

                              return 0;
}

이 코드도, 처음의 코드와 같은 의미를 지닙니다. 하지만

#include <stdio.h> int main() {
      printf("Hello, world!\n");
      return 0;
}

이건 안됩니다.


많은 프로그래밍 언어들은 '들여쓰기'를 권장하고 있습니다. printf 앞의 공백이 보입니까? 그것이 들여쓰기입니다. if와 같은 문법을 배우게 되면 함수 안에서도 중괄호를 사용하게 될텐데, 이러한 경우에는 더 많은 공백을 사용합니다. 조금 후 코드를 보고 이해하십시오.

이러한 들여쓰기는 대부분 4회의 Space나 Tab 키를 사용합니다. 이는 IDE(통합 개발 환경)나 에디터의 설정에 따라 다르며, 대부분의 IDE/에디터들은 엔터를 칠 때마다 자동으로 들여쓰기를 해 줍니다. 이 책의 모든 코드는 6회의 띄어쓰기 Space를 사용했습니다.

마지막으로 자신의 이름을 출력하고, 이 챕터를 마치겠습니다.

#include <stdio.h>
int main() {
      printf("Hello, BOY!\n");	//Hello, BOY!를 출력하고 줄바꿈
      return 0;
}

Hello, BOY!

그리고 조금 미안한 말이지만, 앞으로도 포인터를 모르면 정확한 의미를 알 수 없는 말들이 나올 수 있습니다. 이런 말 뒤에는 ★을 붙일 테니, 지금은 건너뛰었다가 나중에 포인터를 배운 후 다시 와서 읽어보세요.