【发布时间】:2012-05-31 16:29:48
【问题描述】:
我正在读取一个包含 unsigned char 变量的 .cpp 文件,它正在尝试按位左移 16 位,因为 unsigned char 由 8 位组成,左移 16 位将擦除所有位并用八个 0。
unsigned char byte=0xff; byte << 16;
【问题讨论】:
-
表达式的值没有赋值。
-
如所写,编译器将优化移位操作,因为什么都不做。真正的代码是什么?
-
你可能想看看这个:stackoverflow.com/questions/437470/…
-
所有内置运算符都适用于至少 int 大小的对象(请参阅stackoverflow.com/a/5563131/14065)。因此:
sizeof(byte << 16) == sizeof(int)
标签: c++ c bit-manipulation