본문으로 건너뛰기

데이터 타입과 메모리

C는 정적 타입 언어이며 각 자료형은 고정된 크기의 메모리를 점유한다.

기본 데이터 타입

정수형

타입크기 (byte)설명
char1문자 (ASCII)
short2짧은 정수
int4일반 정수
long4 또는 8긴 정수
long long8매우 긴 정수

실수형

타입크기 (byte)설명
float4단정도 실수
double8배정도 실수
long double8 또는 16확장 배정도 실수

기타

  • void: 반환값 없음
  • _Bool: 논리형(0 또는 1)

타입에 따른 메모리 해석

주소를 어떤 타입으로 접근하느냐에 따라 해석이 달라진다.

int x = 0x12345678;
char* p = (char*)&x;
printf("%d\n", x); // 305419896
printf("%x\n", *p); // 78
  • int로 해석하면 4바이트 정수
  • char로 해석하면 첫 1바이트만

암묵적 형변환

컴파일러가 자동으로 변환. 안정성과 유연성 사이 균형이 필요하다.

안전한 변환

작은 타입 -> 큰 타입, 표현 손실 없음

int i = 10;
double d = 3.14;
double result = i + d; // i -> double로 변환됨

안전하지 않은 변환

큰 타입 -> 작은 타입, 표현 손실 있음

long long big = 1LL << 40;
int x = big; // int 범위 초과 (오버플로우)