본문 바로가기

Programming Language/C

변수와 상수

1. 기본적인 소스코드 내용에 대한 이해

아래의 Hello World 라는 기본적인 프로그램을 통해서 소스코드의 기본적인 내용을 알아보겠습니다.

#include <stdio.h>

int main(void) {
    printf("HELLO WORLD\n");
    system("pause");
    return 0;
}

1.1. 라이브러리 불러오기

C와 C++에서는 #include라는 명령어를 통해서 다양한 라이브러리를 불러올 수 있습니다.

#include <stdio.h>

위 코드에 작성된 라이브러리에는 다양한 기본적인 기능이 담겨 있는데 그 예로 printf()와 같은 함수가 있습니다.

stdio.h의 stdio 는 Standard Input Output의 약자입니다.

1.2. 메인함수

프로그램은 항상 메인 함수로부터 시작됩니다. 또한 함수는 반환 값이 없을 수도 있으나 메인함수에서는 0을 반환하는 것이 일반적입니다.

return 0;

1.3. 기본적인 출력 함수

특정 문자들을 출력하기 위해서 printf()함수를 사용합니다. 위해서 언급했듯이 stdio.h 헤더 파일에 포함된 함수입니다.
또한 위 코드를 보면 모든 문장 끝에는 세미콜론( ; )이 들어 있는 것을 볼 수 있는데 일반적으로 작문을 할 때 문장이 끝났음을 온점으로 알리듯이 C언어에서는 하나의 명령어가 끝났음을 알리기 위해 세미콜론을 붙입니다.

1.4. 시스템 기능 불러오기

C언어에서는 system() 함수를 이용해 운영체제의 기본적인 기능을 활용할 수 있습니다.
pause명령어는 cmd에서 키보드를 입력하기 전까지 대기하는 기능을 수행합니다.

system("pause");

 


2. 변수와 상수

2.1. 개념

우리가 중고등학교 때 자주 다뤘던 그 녀석들과 같습니다. 변할 수 있는 데이터는 변수, 변하지 않는 데이터는 상수입니다.

2.2. 변수의 선언

int a;
int a = 0;

변수를 선언할 때는 위와 같이 자료형과 변수명을 입력하는데, 필요할 때는 초기값을 적용할 수도 있습니다. 위에서 사용된 자료형은 정수형(integer)이며 가장 많이 사용되는 자료형입니다.

2.3. 변수의 초기화와 쓰레기 값

기본적으로 변수는 초기화할 수도 있고 초기화하지 않을 수도 있습니다.
초기화되지 않은 변수에는 쓰레기 값이 들어갑니다. 비주얼 스튜디오는 기본적으로 초기화되지 않은 변수를 감지하고 오류 메시지를 출력하는 기능을 제공하고 있습니다.
따라서 아래와 같이 main 함수 안에 초기화되지 않은 변수 a를 넣고 실행하면,

#include <stdio.h>
int main(void) {
    int a;
    printf("The number is %d.\n", a);
    system("pause");
    return 0;
}

비주얼 스튜디오는 아래와 같은 오류 메시지를 출력합니다.

참고로 정적변수(main함수 바깥에 선언된 변수)로 선언된 것은 기본적으로 0으로 값이 초기화됩니다. 반면, 정적변수가 아닌 것을 0으로 초기화하려면 모든 변수마다 값을 넣어주어야 합니다.

#include <stdio.h>

int a;

int main(void) {
    printf("The number is %d.\n", a);
    system("pause");
    return 0;
}

 

실행결과:
The number is 0.
계속하려면 아무 키나 누르십시오 . . .

2.4. 기본적인 자료형

자료형 크기 사용하는 경우
int 4 byte 일반적인 정수형을 표현
long long 8 byte 숫자가 긴 정수형을 표현
double 8 byte 일반적인 실수형을 표현
bool 1 bit 참/거짓을 표현
char 1 byte 한 문자를 표현

1 byte는 8 bit이다.

2.5. 식별자와 예약어

식별자(Identifier)는 변수나 함수 등의 고유한 이름을 지정할 때 사용하는데, 앞에서 다룬 Hello World 프로그램의 코드 중 int a에서 a가 식별자입니다.
여기서 string, for, void, bool, if 등과 같이 C언어의 문법으로 정해진 예약어는 식별자로 사용이 불가능합니다.