我试图理解算术移位运算符与积分提升的确切工作原理。特别是,我想知道在C++14标准中哪些值 a,b,c,d,e,f,g,h
是完全定义的,哪些可以取决于平台/硬件/编译器(假设sizeof(int) == 4
)。
int a = true << 3;
int b = true >> 3;
int c = true << 3U;
int d = true >> 3U;
int e = true << 31;
int f = true >> 31;
int g = true << 31U;
int h = true >> 31U;