Tho*_*mas 1 c++ types bit-shift
我已经查看了这个答案中给出的指南,但我仍然不理解位移.特别是我对数据类型发挥作用感到困惑.
下列:
unsigned int a = pow(2,31);
cout << (a << 1);
Run Code Online (Sandbox Code Playgroud)
确实会产生0,因为它int是32位,因此1向左移动,将其推入无效状态.
但以下
unsigned int a = 1;
unsigned char b = (unsigned char)a;
cout << (unsigned int)(b<<8);
Run Code Online (Sandbox Code Playgroud)
产生256.为什么?我的猜测是a char是8位,所以移动1左8位应该给零.
是否有功能/转移这样做?(即评估1<<8为0).