#[warn(unused_parens)]
fn main() {
let mut a: u8 = 199;
if (a > 2) // 改成 a <2 就正常了
{
a += 199;
}
println!("{}", a);
}
程序直接退出了。应该是运行时检测的,好奇是怎么实现的(如果加法都有判断的话,运行时怎么保持高性能),有木有大佬解释下?
1
lzoje 8 天前
debug 版本会检测,release 版本不检测的。https://doc.rust-lang.org/stable/book/ch03-02-data-types.html#integer-overflow
|
2
gwy15 8 天前 via iPhone
硬件支持的话,溢出时 cpu 会设置寄存器 flag ,加一行 jmpne 就可以了
|
3
wjx0912 OP 理解了,感谢 2 位老总~~~
|