C 언어에서 변수를 선언할 때는 해당 변수가 어떤 종류의 값을 저장할 것인지 반드시 지정해야 합니다. 이 역할을 하는 것이 바로 데이터 타입(자료형)입니다. C 컴파일러는 크게 다음 네 가지 기본(fundamental) 데이터 타입을 지원합니다.
- 정수형(Integer)
- 문자형(Character)
- 부동소수점형(Floating-point)
- 배정도 부동소수점형(Double precision floating point)
이 중 정수형과 문자형은 정수 계열(Integral) 데이터 타입으로 분류되며, 나머지는 소수점 이하 값을 표현하는 실수 계열입니다. 아래에서 각 타입의 크기, 표현 범위, 입출력에 사용되는 서식 지정자까지 하나씩 살펴보겠습니다.

1. 정수형(Integer) 데이터 타입
정수형은 말 그대로 소수점이 없는 정수 값을 저장하는 데 사용됩니다. 저장 크기와 표현 범위에 따라 short int, int, long int로 나뉘며, 각각 음수를 포함하는 signed(부호 있음) 형태와 0 이상의 값만 저장하는 unsigned(부호 없음) 형태로 선언할 수 있습니다.
| 정수형 데이터 타입 | |||
|---|---|---|---|
| 타입 | 크기(바이트) | 표현 범위 | 서식 지정자 |
| short int (signed short int) | 2 | -32,768 ~ 32,767 | %hd |
| unsigned short int | 2 | 0 ~ 65,535 | %hu |
| int (signed int) | 4 | -2,147,483,648 ~ 2,147,483,647 | %d 또는 %i |
| unsigned int | 4 | 0 ~ 4,294,967,295 | %u |
| long int (signed long int) | 4 | -2,147,483,648 ~ 2,147,483,647 | %ld |
| unsigned long int | 4 | 0 ~ 4,294,967,295 | %lu |
※ 위 표의 크기는 일반적인 32비트 시스템 기준이며, 운영체제나 컴파일러 환경에 따라 달라질 수 있습니다.
2. 문자형(Character) 데이터 타입
문자형은 단일 문자 하나를 저장하기 위한 타입으로, 크기는 항상 1바이트입니다. 흥미로운 점은 내부적으로 문자가 정수(ASCII 코드 값)로 저장된다는 것입니다. 예를 들어 대문자 'A'는 ASCII 값 65로 저장되며, 'a'는 97, 숫자 '0'은 48에 해당합니다.
| 문자형 데이터 타입 | |||
|---|---|---|---|
| 타입 | 크기(바이트) | 표현 범위 | 서식 지정자 |
| char (signed char) | 1 | -128 ~ 127 | %c |
| unsigned char | 1 | 0 ~ 255 | %c |
3. 부동소수점형(Floating-point) 데이터 타입
부동소수점형은 실수, 즉 소수점이 있는 숫자를 저장하는 데 사용됩니다. 필요한 정밀도에 따라 세 가지 타입을 선택할 수 있습니다.
float: 약 6~7자리의 유효숫자 정밀도 제공double: 약 15~16자리의 유효숫자 정밀도 제공long double: double보다 더 높은 정밀도가 필요한 경우 사용
| 부동소수점형 데이터 타입 | |||
|---|---|---|---|
| 타입 | 크기(바이트) | 표현 범위 | 서식 지정자 |
| float | 4 | 약 3.4E-38 ~ 3.4E+38 | %f |
| double | 8 | 약 1.7E-308 ~ 1.7E+308 | %lf |
| long double | 12 또는 16 (환경에 따라 다름) | 약 3.4E-4932 ~ 1.1E+4932 | %Lf |
마무리 정리
C 언어의 기본 데이터 타입은 정수형(int 계열), 문자형(char), 단정도 실수형(float), 배정도 실수형(double)으로 구성됩니다. 각 타입은 메모리 크기와 표현 가능한 값의 범위가 다르므로, 프로그램의 목적과 저장할 데이터의 성격에 맞게 적절히 선택하는 것이 중요합니다. 특히 서식 지정자(%d, %f, %lf 등)는 printf, scanf 함수 사용 시 반드시 타입과 일치시켜야 오류를 방지할 수 있습니다.