有没有办法通过二进制赋值获得负数而不发出警告,同时保留其他更有效的警告。还是我在思考这个问题是错误的?
const NEG: i32 = 0b1000_0000_0000_0000_0000_0000_0000_0000;
// -2147483648
Run Code Online (Sandbox Code Playgroud)
const NEG: i32 = 0b1000_0000_0000_0000_0000_0000_0000_0000;
// -2147483648
Run Code Online (Sandbox Code Playgroud)
您可以从无符号类型开始,然后转换为有符号:
const NEG: i32 = 0b1000_0000_0000_0000_0000_0000_0000_0000_u32 as i32;
Run Code Online (Sandbox Code Playgroud)
没有警告,同时保留其他更有效的警告
您可以禁用特定表达式的特定警告:
#[allow(overflowing_literals)]
const NEG: i32 = 0b1000_0000_0000_0000_0000_0000_0000_0000;
Run Code Online (Sandbox Code Playgroud)
然而,这种原始行为似乎是不正确的。二进制值未超出 的范围i32。似乎存在一个问题。
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |