一个 rust 溢出的问题

30 天前
 wjx0912
#[warn(unused_parens)]
fn main() {
    let mut a: u8 = 199;
    if (a > 2)   // 改成 a <2 就正常了
    {
        a += 199;
    }
    println!("{}", a);
}

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

1180 次点击
所在节点    Rust
3 条回复
lzoje
30 天前
debug 版本会检测,release 版本不检测的。https://doc.rust-lang.org/stable/book/ch03-02-data-types.html#integer-overflow
gwy15
30 天前
硬件支持的话,溢出时 cpu 会设置寄存器 flag ,加一行 jmpne 就可以了
wjx0912
30 天前
理解了,感谢 2 位老总~~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1092643

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX