기본 타입

기본 타입 (Primitive Types)

Zig가 언어 수준에서 미리 정의해 두고 쓰는 기본 타입들을 한눈에 담아둔 표예요. 정수부터 부동소수점, 불리언, 그리고 조금 특이한 역할을 하는 타입들(type, noreturn, comptime_int 같은)까지, 딱 필요한 만큼만 골라둔 게 Zig답죠. 아래 표에서 C Equivalent 컬럼을 보면 이 타입이 C와 만나면 어떤 타입으로 맞닿는지를 알 수 있어요. ABI 호환이 중요할 때 이 컬럼이 결정적인 실마리가 됩니다.

출처: Zig Documentation

본문

기본 타입 표

Type C Equivalent Description
i8 int8_t 부호 있는 8비트 정수
u8 uint8_t 부호 없는 8비트 정수
i16 int16_t 부호 있는 16비트 정수
u16 uint16_t 부호 없는 16비트 정수
i32 int32_t 부호 있는 32비트 정수
u32 uint32_t 부호 없는 32비트 정수
i64 int64_t 부호 있는 64비트 정수
u64 uint64_t 부호 없는 64비트 정수
i128 __int128 부호 있는 128비트 정수
u128 unsigned __int128 부호 없는 128비트 정수
isize intptr_t, ssize_t 부호 있는 포인터 크기 정수
usize uintptr_t, size_t 부호 없는 포인터 크기 정수. #5185 참고
c_char char C와의 ABI 호환용
c_short short C와의 ABI 호환용
c_ushort unsigned short C와의 ABI 호환용
c_int int C와의 ABI 호환용
c_uint unsigned int C와의 ABI 호환용
c_long long C와의 ABI 호환용
c_ulong unsigned long C와의 ABI 호환용
c_longlong long long C와의 ABI 호환용
c_ulonglong unsigned long long C와의 ABI 호환용
c_longdouble long double C와의 ABI 호환용
f16 _Float16 16비트 부동소수점 (10비트 가수) IEEE-754-2008 binary16
f32 float 32비트 부동소수점 (23비트 가수) IEEE-754-2008 binary32
f64 double 64비트 부동소수점 (52비트 가수) IEEE-754-2008 binary64
f80 long double 80비트 부동소수점 (64비트 가수) IEEE-754-2008 80-bit extended precision
f128 _Float128 128비트 부동소수점 (112비트 가수) IEEE-754-2008 binary128
bool bool true 또는 false
anyopaque void 타입 지워진 포인터(type-erased pointers)에 사용
noreturn (none) break, continue, return, unreachable, while (true) {} 의 타입
type (none) 타입들의 타입
anyerror (none) 오류 코드(error code)
comptime_int (none) comptime-known 값에만 허용. 정수 리터럴의 타입.
comptime_float (none) comptime-known 값에만 허용. 부동소수점 리터럴의 타입.

위에 나열한 정수 타입들에 더해, 임의의 비트 폭을 가진 정수도 만들 수 있어요. i 또는 u 뒤에 자릿수를 붙이면 되는데, 예를 들어 i7은 부호 있는 7비트 정수를 가리킵니다. 정수 타입이 가질 수 있는 최대 비트 폭은 65535예요.

함께 보기

더 알아보기 (Learn more)

  • 정수 타입의 다양한 문법과 리터럴 처리 방식은 Integers 섹션에서 자세히 다뤄요.
  • 부동소수점 타입의 정밀도와 연산 규칙은 Floats 섹션을 참고하세요.
  • C와 함께 쓸 때 타입이 어떻게 맞물리는지 보고 싶다면 c_* 프리픽스 타입들이 바로 그 역할을 담당한다는 점을 기억해 두면 좋아요.