一个 rust 溢出的问题

wjx0912 · 昨天 09:32 · 412 次点击
#[warn(unused_parens)]
fn main() {
    let mut a: u8 = 199;
    if (a > 2)   // 改成 a <2 就正常了
    {
        a += 199;
    }
    println!("{}", a);
}

程序直接退出了。应该是运行时检测的,好奇是怎么实现的(如果加法都有判断的话,运行时怎么保持高性能),有木有大佬解释下?

举报· 412 次点击
登录 注册 站外分享
3 条回复  
lzoje 初学 昨天 09:47
debug 版本会检测,release 版本不检测的。https://doc.rust-lang.org/stable/book/ch03-02-data-types.html#integer-overflow
gwy15 小成 昨天 09:56
硬件支持的话,溢出时 cpu 会设置寄存器 flag ,加一行 jmpne 就可以了
wjx0912 楼主 小成 昨天 09:59
理解了,感谢 2 位老总~~~
返回顶部