我正在学习C语言。我有这个代码,如果需要可以提供更多:
int result = 0;
int mask1 = 0x0000ffff;
mask1 = mask1 >> 28;
当我使用 gdb 和 print 时/x mask1
,我得到0x0
了,这是正确的。那为什么会这样:
int result = 0;
int mask1 = 0xffffffff;
mask1 = mask1 >> 28;
print 0xffffffff
不应该打印0x0000000f
吗,因为我要左移 28 位?
它与我的 64 位机器上 int 占用的位数有关吗?我看着这个,但它并没有完全回答所有问题。