【发布时间】:2015-02-03 04:09:25
【问题描述】:
我正在尝试移动值为 1111 的变量“a”并将其向左移动,这样我可以获得 1110,这意味着它应该打印数字 14。但是,它正在打印 30。我在想因为它正在移动,但它没有取出最左边的位(11110),但它应该是 1110。这是我的代码。谢谢你。
int main(int argc, char *argv[]) {
unsigned a;
a=0xF;
a=a<<1;
printf(": %u\n",a);
【问题讨论】:
-
unsigned a!=unsigned char a。这个数字实际上是0x[0000]000F(取决于它是 16 位还是 32 位无符号整数)。移位:0x[0000]001E== 30。 -
@EOF 嗯?即使以 8 位精度完成移位,也将是 30
-
@MattMcNabb:是的。我写的时候很累。我坚持认为它不包含任何事实错误,尽管它可能有点误导。