변수와 자료형
지난 편에서 gcc 컴파일 과정을 살펴봤으니, 이제 본격적으로 C언어 문법으로 들어가 보겠습니다. 오늘 다룰 주제는 프로그래밍의 가장 기본이라고 할 수 있는 “변수와 자료형”입니다. 변수는 데이터를 담는 상자라고 생각하면 되고, 자료형은 그 상자에 어떤 종류의 데이터를 담을지 정해주는 규칙이라고 이해하면 쉽습니다.
변수란 무엇인가?
프로그램이 실행되는 동안 우리는 숫자, 문자, 참/거짓 같은 여러 값을 계속 다루게 됩니다. 이런 값을 메모리에 저장해두고 필요할 때마다 꺼내 쓰기 위한 이름 붙은 공간이 바로 변수입니다. C언어에서 변수를 사용하려면 먼저 “이 변수는 어떤 종류의 데이터를 담을지”를 컴파일러에게 알려줘야 하는데, 이를 변수 선언이라고 합니다.
int age; // 정수를 담는 변수 age를 선언
age = 25; // age에 25라는 값을 저장(대입)
선언과 동시에 값을 넣어줄 수도 있는데, 이를 초기화라고 부릅니다.
int age = 25; // 선언과 동시에 초기화
기본 자료형 살펴보기
C언어에는 여러 기본 자료형이 있는데, 자주 쓰이는 것들만 먼저 정리해보겠습니다.
int: 정수를 저장합니다. 예:10,-3,0float: 소수점이 있는 실수를 저장합니다. 예:3.14double:float보다 더 정밀한 실수를 저장합니다. 실무에서는float보다double을 더 많이 씁니다.char: 문자 하나를 저장합니다. 예:'A','z'(작은따옴표를 사용합니다)
각 자료형이 차지하는 메모리 크기는 컴퓨터 환경에 따라 조금씩 다를 수 있지만, 보통 int는 4바이트, char는 1바이트, double은 8바이트를 사용합니다. 이 크기는 sizeof 연산자로 직접 확인할 수 있습니다.
예제 코드로 확인해보기
아래 코드는 여러 자료형의 변수를 선언하고, 각각의 값과 메모리 크기를 출력하는 예제입니다.
#include <stdio.h>
int main(void) {
int age = 25;
float height = 175.5f;
double pi = 3.14159265;
char grade = 'A';
printf("나이: %d살\n", age);
printf("키: %.1fcm\n", height);
printf("원주율: %.8f\n", pi);
printf("학점: %c\n", grade);
printf("\n--- 각 자료형의 크기 ---\n");
printf("int 크기: %zu 바이트\n", sizeof(int));
printf("float 크기: %zu 바이트\n", sizeof(float));
printf("double 크기: %zu 바이트\n", sizeof(double));
printf("char 크기: %zu 바이트\n", sizeof(char));
return 0;
}
코드 동작 설명
int age = 25;처럼 각 자료형에 맞는 변수를 선언하고 초기화했습니다.printf에서 자료형마다 사용하는 서식 지정자(format specifier)가 다릅니다. 정수는%d, 실수는%f, 문자는%c를 사용합니다.%.1f나%.8f처럼 소수점 뒤에 숫자를 붙이면 출력할 소수 자릿수를 지정할 수 있습니다.height처럼float값에는 숫자 뒤에f를 붙여줘야 합니다. 붙이지 않으면 컴파일러가 기본적으로double로 취급하기 때문에, 정확한 자료형을 지정해주는 습관을 들이는 게 좋습니다.sizeof연산자는 괄호 안에 넣은 자료형이나 변수가 메모리에서 차지하는 바이트 수를 알려줍니다. 결과값은 부호 없는 정수 타입이라서%zu라는 전용 서식 지정자를 사용합니다.
이 코드를 gcc datatypes.c -o datatypes로 컴파일하고 실행하면 아래와 비슷한 결과가 나옵니다. (크기는 컴파일러나 환경에 따라 약간 다를 수 있습니다.)
나이: 25살
키: 175.5cm
원주율: 3.14159265
학점: A
--- 각 자료형의 크기 ---
int 크기: 4 바이트
float 크기: 4 바이트
double 크기: 8 바이트
char 크기: 1 바이트
핵심 요약
- 변수는 데이터를 저장하는 이름 붙은 메모리 공간이고, 자료형은 그 공간에 어떤 데이터를 담을지 정하는 규칙입니다.
int(정수),float/double(실수),char(문자)가 가장 기본적으로 쓰이는 자료형입니다.printf로 값을 출력할 때는 자료형에 맞는 서식 지정자(%d,%f,%c등)를 사용해야 합니다.sizeof연산자로 각 자료형이 차지하는 메모리 크기를 직접 확인할 수 있습니다.
다음 편에서는 프로그램 실행 중에 값이 바뀌지 않는 데이터인 “상수와 리터럴”에 대해 알아보겠습니다. 변수와 상수의 차이가 무엇인지, 그리고 const 키워드는 어떻게 쓰는지 함께 살펴볼 예정입니다.