问个关于位运算的问题。

main() { unsigned a,b,c,d; scanf("%o",&a); b=a>>4; c=~(~0<<4); d=b&c; printf("%o\n%o\n",a,d); }
上面一行简单的代码。
如果输入a=056 0101 0110右移4位应该是0000 0101啊,怎么b结果为2了?
找到原因了。^_^,八进制,只有三位,056应该表示为101110,所以结果为2
[[it] 本帖最后由 soler 于 2009-8-4 19:18 编辑 [/it]]