integral shift
C++中的整型的移位操作可能导致undefined behavior。从美国女程序员Satabdi Das学到
#include <cstdint>
#include <iostream>
int main()
{
std::u32int_t i=0;
std::u32int_t k=31;
auto j = i<<k;
k=32;
j = i<<k;//UB
k=33;
j = i<<k;//UB
}
如果k大于等于i的二进制bit位数32,或者k小于0,将导致undefined behavior。谢谢你 Satabdi Das!
Posted 2019-11-11