当您运行此代码时:
#![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)
您会看到,在编译时或运行时执行时,使用超出位长度的值移位数字位会产生不同的行为.
这是正常的行为吗?它在某处记录了吗?这不在记录的未定义行为列表中.