整数 (Integers)
Zig 支持任意位宽的整数。除了标准的原语类型(如 i32、u64)之外,还可以定义任意位宽的整数标识符。
整数类型
- 标准有符号整数:
i8,i16,i32,i64,i128 - 标准无符号整数:
u8,u16,u32,u64,u128 - 指针大小整数:
isize(有符号),usize(无符号) - 任意位宽整数:
i7(有符号 7 位),u21(无符号 21 位),u65535(最大位宽)
整型字面量 (Integer Literals)
整型字面量属于 comptime_int 类型。它们没有固定的大小,并且具有任意精度。
- 十进制:
98222 - 十六进制:
0xff - 八进制:
0o755 - 二进制:
0b11110000
为了提高可读性,可以在数字之间使用下划线 _ 作为分隔符:
const x = 1_000_000;
const y = 0x12_34_56;
运行时整数值 (Runtime Integer Values)
虽然整型字面量在编译时具有任意精度,但在运行时,整数值必须具有固定的大小。如果尝试将一个超出目标类型范围的整型字面量赋值给变量,将会导致编译错误。
var x: u8 = 255; // 好的
var y: u8 = 256; // 编译错误:integer literal '256' cannot be coerced to type 'u8'