【发布时间】:2017-10-13 00:47:54
【问题描述】:
当你运行这段代码时:
#![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);
}
您会看到,在编译时或运行时移动具有超过位长度的值的数字的位会产生不同的行为。
这是正常行为吗?它是否记录在某处?这不在list of documented undefined behavior 中。
【问题讨论】:
标签: rust undefined-behavior bit-shift