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