【发布时间】:2019-06-23 12:34:31
【问题描述】:
令 uint8 和 uint16 为 8 位和 16 位正整数的数据类型。
uint8 a = 1;
uint16 b = a << 8;
我在 32 位架构上测试了这个程序,结果
b = 256
在具有 8 位长度寄存器的系统上,相同的程序会产生结果吗:
b = 0 ?
因为寄存器中的所有位都被 移到 0
【问题讨论】:
-
欢迎来到 Stack Overflow。您将位移动到其大小末端的目标是什么?这似乎有点不寻常,可能是未定义的行为。
-
行为取决于数据类型的大小。在表达式中使用时,整数操作数被提升为可能更大的整数。提升的大小决定了班次操作的行为。