C언어 자료형
선수학습(1개)
요약
C언어의 자료형을 정리합니다. 정수형(int, char, long), 실수형(float, double), unsigned 자료형, 정수 리터럴 접미사(u, L, UL)까지 쌩기초부터 설명합니다.
자료형이란? 쌩기초
자료형(data type)은 변수에 어떤 종류의 데이터를 저장할지 정하는 것입니다.
왜 자료형이 필요할까요? 컴퓨터는 데이터를 저장할 때 메모리(임시 저장 공간)를 사용합니다. 이 메모리의 크기를 나타내는 단위가 바이트(byte) 입니다. 1바이트는 8비트(bit) 이고, 1비트는 0 또는 1 하나를 저장하는 가장 작은 단위입니다.
정수를 저장할 때와 소수점이 있는 수를 저장할 때 필요한 바이트 수가 다릅니다. 자료형을 통해 "이 변수에는 이런 종류의 데이터를 저장할 거야"라고 미리 알려주는 것입니다.
C언어의 자료형은 크게 정수형과 실수형으로 나뉩니다.
- 정수(整數): 소수점이 없는 수입니다. 1, 2, -3, 100 같은 수
- 실수(實數): 소수점이 있는 수입니다. 3.14, -0.5, 100.0 같은 수
자료형 핵심 정리
| 분류 | 자료형 | 저장하는 데이터 |
|---|---|---|
| 정수형 | int | 정수 (가장 기본) |
| 정수형 | char | 문자 하나 / 작은 정수 |
| 정수형 | long | int보다 큰 정수 |
| 정수형 | unsigned int | 양수만 저장하는 정수 |
| 정수형 | unsigned char | 양수만 저장하는 문자/정수 |
| 실수형 | float | 소수점이 있는 수 |
| 실수형 | double | float보다 정밀한 소수점이 있는 수 |
정수형 자료형 쌩기초
정수형은 소수점이 없는 수를 저장합니다.
int — 가장 기본적인 자료형
int는 integer(정수) 의 약자입니다. C언어에서 가장 많이 사용하는 자료형입니다.
크기는 4바이트(32비트) 이며, 약 -21억부터 +21억까지의 수를 저장할 수 있습니다.
char — 문자 하나를 저장하는 자료형
char는 character(문자) 의 약자입니다. 크기는 1바이트(8비트) 입니다.
주로 문자 하나를 저장할 때 사용합니다. 문자를 저장할 때는 작은따옴표(' ')로 감쌉니다.
long — int보다 큰 정수
long은 int보다 더 큰 정수를 저장할 때 사용합니다. 시스템에 따라 int는 32비트, long은 64비트일 수 있습니다.
실수형 자료형 쌩기초
실수형은 소수점이 있는 수를 저장합니다.
float — 기본 실수형
float는 floating point(부동소수점) 의 약자입니다. 크기는 4바이트이며, 소수점 이하 약 6 ~ 7자리까지 정확하게 표현할 수 있습니다.
double — 더 정밀한 실수형
double은 float보다 2배 더 정밀한 실수형입니다. 이름도 "double precision(이중 정밀도)"에서 왔습니다. 크기는 8바이트이며, 소수점 이하 약 15 ~ 16자리까지 정확합니다.
C언어에서 소수점이 있는 숫자(예: 3.14)를 그냥 쓰면 기본적으로 double 타입으로 처리됩니다. float로 사용하려면 3.14f처럼 f를 붙여야 합니다.
| 자료형 | 크기 | 정밀도 | 사용 예시 |
|---|---|---|---|
float | 4바이트 | 소수점 6 ~ 7자리 | 3.14f |
double | 8바이트 | 소수점 15 ~ 16자리 | 3.141592653589793 |
unsigned 자료형 기초
unsigned는 "부호 없는" 이라는 뜻입니다. 일반 자료형은 음수와 양수 모두 저장할 수 있지만, unsigned를 붙이면 양수(0 포함)만 저장합니다. 대신 양수 범위가 2배로 늘어납니다.
| 자료형 | 범위 |
|---|---|
int | -2,147,483,648 ~ 2,147,483,647 (약 -21억 ~ +21억) |
unsigned int | 0 ~ 4,294,967,295 (약 0 ~ 42억) |
char | -128 ~ 127 |
unsigned char | 0 ~ 255 |
unsigned int를 쓰는 이유
나이, 개수, 크기처럼 절대 음수가 될 수 없는 값에 사용합니다.
char와 unsigned char
unsigned char는 비트 연산에서 8비트 단위로 계산할 때 자주 사용합니다.
~5의 결과가 int에서는 -6이지만, unsigned char에서는 250입니다. 8비트 범위(0 ~ 255)에서 모든 비트가 반전되기 때문입니다.
정수 리터럴 접미사 심화
코드에 직접 쓴 값(예: 5, 3.14, 'A')을 리터럴(literal) 이라고 합니다. 5u, 100L처럼 리터럴 뒤에 붙는 문자를 접미사(suffix) 라고 하며, 접미사는 값의 자료형을 직접 지정합니다.
| 접미사 | 의미 | 예시 |
|---|---|---|
u 또는 U | unsigned int | 5u, 100U |
l 또는 L | long | 5l, 100L |
ul 또는 UL | unsigned long | 5ul, 100UL |
f 또는 F | float | 3.14f, 1.0F |
정보처리기사 실기 예시
연결 리스트 문제에서 자주 등장합니다.
여기서 5u, 7u, 11u는 모두 unsigned int 타입입니다. 구조체 멤버가 unsigned int x;로 선언되어 있기 때문에 타입을 맞춰준 것입니다.