有没有一种方法可以通过二进制赋值获得负数,而不会出现overflowing_literals警告?

Aar*_* H. 3 rust

有没有办法通过二进制赋值获得负数而不发出警告,同时保留其他更有效的警告。还是我在思考这个问题是错误的?

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)

She*_*ter 5

您可以从无符号类型开始,然后转换为有符号:

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似乎存在一个问题