优秀的编程知识分享平台

网站首页 > 技术文章 正文

zig编程语言快速入门——2.15 基础知识-Integer

nanyue 2024-08-11 20:34:16 技术文章 11 ℃

Integer Rules 整数规则

Zig支持十六进制、八进制和二进制的整数字 .

const decimal_int: i32 = 98222;
const hex_int: u8 = 0xff;
const another_hex_int: u8 = 0xFF;
const octal_int: u16 = 0o755;
const binary_int: u8 = 0b11110000;

下划线也可以放在数字之间作为视觉分隔符 .

const one_billion: u64 = 1_000_000_000;
const binary_mask: u64 = 0b1_1111_1111;
const permissions: u64 = 0o7_5_5;
const big_address: u64 = 0xFF80_0000_0000_0000;

允许 "整数拓宽",这意味着一种类型的整数可以胁迫为另一种类型的整数,条件是新类型可以容纳旧类型的所有数值 .

test "integer widening" {
    const a: u8 = 250;
    const b: u16 = a;
    const c: u32 = b;
    try expect(c == a);
}

如果你有一个存储在整数中的值,但不能胁迫到你想要的类型,@intCast可以用来明确地从一种类型转换到另一种。如果给定的值超出了目标类型的范围,这就是可检测的非法行为 .

test "@intCast" {
    const x: u64 = 200;
    const y = @intCast(u8, x);
    try expect(@TypeOf(y) == u8);
}

默认情况下,整数是不允许溢出的。溢出是可检测的非法行为。有时候,能够以一种明确定义的方式溢出整数是人们所希望的行为。对于这种使用情况,Zig提供了溢出操作符 .

Normal Operator

Wrapping Operator

+

+%

-

-%

*

*%

+=

+%=

-=

-%=

*=

*%=

test "well defined overflow" {
    var a: u8 = 255;
    a +%= 1;
    try expect(a == 0);
}
最近发表
标签列表