gpt4 book ai didi

rust - 为什么我可以将负数分配给无符号整数变量?

转载 作者:行者123 更新时间:2023-11-29 07:57:52 25 4
gpt4 key购买 nike

为什么下面的 Rust 代码没有失败?!

fn main() {
let a:usize = -2;
assert!(a == -2);
}
  • 我预计会出现编译时错误,因为我正在尝试将有符号数分配给无符号变量。
  • 我还希望断言失败,因为 a 不能为负。

两者都没有发生,为什么?

编译器不应该保护我免受常见溢出问题的影响吗?

最佳答案

到目前为止,Rust 已经将整数类型的下溢和溢出语义定义为环绕模 2。因此,将 -2 分配给无符号整数只是要求其最大值减一.

那些语义是being challenged right now它的要点是对于 1.0 下溢和上溢将产生一个未指定的值(并且可能 panic!);尽管出于性能原因,测试将仅在 Debug模式下是系统的,在 Release模式下默认情况下将被禁用。

在这个新方向上,将负值分配给无符号整数是一种错误是合理的,我只能邀请您参与链接的 RFC 以表达您的担忧。

关于rust - 为什么我可以将负数分配给无符号整数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28137192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com