1
谁能解释为什么下面的代码输出它做什么:符号 - 无符号转换
char c = -1;
cout << (c << 8) << endl;
cout << ((unsigned char) c << 8) << endl;
cout << (c << 24) << endl;
cout << ((unsigned char) c << 24) << endl;
输出:
-256
65280
-16777216
-16777216
我以为铸造unsigned char类型会简单地改变位获得方式解释。但是,当向左移动8时,结果发生了变化。奇怪的是,当向左移动24时,情况似乎不是这样。