for*_*emo 3 rust
为什么下面的Rust-Code没有失败?!
fn main() { let a:usize = -2; assert!(a == -2); }
a
两者都没有发生,为什么?
编译器不应该保护我免受常见溢出问题的影响吗?
Mat*_* M. 6
到目前为止,Rust已经将整数类型的下溢和溢出的语义定义为环绕模2.因此,分配-2给无符号整数只是要求它的最大减1.
-2
那些语义现在正在受到挑战,它的要点是1.0下溢和溢出将产生一个未指定的值(并且可能panic!); 尽管出于性能原因,测试仅在调试模式下是系统性的,默认情况下将在发布模式下禁用.
panic!
在这个新的方向上,考虑将一个负值分配给一个无符号整数是一个错误是合理的,我只能邀请你加入链接的RFC,以表达你的担忧.
归档时间:
11 年,4 月 前
查看次数:
1405 次
最近记录: