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