max*_*zig 5 undefined-behavior rust
对于在C中产生未定义行为的整数的几个操作在Rust中定义.一个共同的主题是它们在调试模式下发生恐慌,并在发布模式下具有明确的非恐慌结果.例如,在调试模式下有符号整数溢出恐慌,但在发布模式下包装.也有像定义的操作符的变体wrapping_add(),saturating_add()等等.
但是如何转移负值呢?这是C中未定义的行为.
以下测试用例在Rust 1.17.0中成功:
#[test]
fn negative_shift() {
let i = -128i8;
let j = i << 1;
assert_eq!(j, 0);
}
Run Code Online (Sandbox Code Playgroud)
虽然它成功了但它仍然可能是未定义的行为......
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |