프로그래밍 C언어

printf "Hello World"

게임첫걸음 2024. 8. 6. 16:00

Debugging을 하지 않고 연습하는 글입니다.

 

먼저 코드를 보겠습니다.

 

#include <stdio.h> 

void main() // 반환형 함수형(인수) { }, Entry Function
{
         printf("Hello World!"\n);
}

 

#include<stdio.h>

  1. # = 전처리 (Pro-Processing)
  2. include<> = <> 기호 안에 파일을 프로그램에 포함시켜 주는 전처리기
  3. stdio.h = standard input output.header의 약자로 표준 입출력 관련 파일들의 헤더 파일을 포함하겠다는 뜻
  4. {} = 함수의 정의의 범위

void main()

  1. void = 반환(자료)형
  2. main = 함수형
  3. () 안 값 = 인수이며, 인수가 정의되어있지 않다면 Entry Function이라고 부름.
  4. Entry Function은 그냥 인수를 정의하지 않고 값을 나타내는 함수.

printf("Hello World");

  1. printf = printf(format)으로 문자열을 매개변수로 받는다.
  2. () 안 값 = 매개변수
  3. "" = 문자열, String 값을 가져올 수 있는 기능
  4. \n = 줄 바꿈 기능
  5. ; = {} 안의 함수들의 마침표 역할, 웬만하면 찍어줍시다.

 

해석은 모두 끝났지만 궁금증이 생겼습니다.

 

책에 적힌 코드와 강사님이 쓰신 코드가 다른 것입니다.

int main(void)

{

        printf("Hello World!");

        return 0;

}

 

강사님의 코드에는 int가 없고 main과 void의 위치가 다릅니다. 그 이유에 대해 찾아봤고 그에 대한 답을 많은 블로그에서 다루었지만, 초보자가 이해하기엔 많이 어려웠습니다. 하지만, 공통적인 표현을 정리해 가져왔습니다.

  1. C언어의 자체 표준에선 void main은 허용하지 않고 int main만을 허용합니다.
  2. int 값을 반환하는 main이 표준 문법이기 때문입니다.
  3. int 함수는 return(반환값)을 사용하지 않으면 오류가 발생합니다.
  4. main이 반환하는 값은 해당 프로그램의 상태(종료) 여부를 의미하는 값으로 사용됩니다.
  5. void는 반환하지 않은 함수의 결과를 위한 함수입니다.
  6. 즉, void와 main은 반환이라는 것에 있어 같이 있을 수 없는 상반된 사이입니다.
  7. 그러나, 컴파일러 프로그램 개발자들이 C++에 익숙하여 필요성에 의해 관용적으로 사용되던 void main() 기능을 허용해 준 덕분에 사용할 수 있다고합니다.
  8. 예시로 void main() { } = int main() { return0; } 두 함수는 같은 결과를 가지고 있습니다.

아직 함수들에 익숙하지않아 이해가 30%정도 되는 것 같지만 배우면서 반복해 읽다보면 이해될 것 같습니다.