相关疑难解决方法(0)

是否预计在Rust中过大的位移是未定义的行为?

当您运行此代码时:

#![allow(exceeding_bitshifts)]

fn main() {
    const NUMBER: u64 = 0b_10101010;

    fn print_shift(i: u32) {
        println!("{:b}", NUMBER >> i);
    }

    print_shift(65);
    println!("{:b}", NUMBER >> 65);
}
Run Code Online (Sandbox Code Playgroud)

您会看到,在编译时或运行时执行时,使用超出位长度的值移位数字位会产生不同的行为.

这是正常的行为吗?它在某处记录了吗?这不在记录的未定义行为列表中.

bit-shift undefined-behavior rust

5
推荐指数
1
解决办法
464
查看次数

标签 统计

bit-shift ×1

rust ×1

undefined-behavior ×1