为什么下面的代码返回0?
#include <stdio.h>
int main(void)
{
printf("%x",(1 - sizeof(int)) >> 32);
getch();
return 0;
}
int main(int argc, char *const argv[])
{
/* 有符号数右移填充符号位, 这里是-1 */
printf("%x\n", (int)(1 - sizeof(int)) >> 32); //对于有符号数的移位:左边空出来的全为符号位。负数的符号位为1 所以全为 1,正数的符号位为0 所以全为0。
printf("%x\n", (unsigned int)(1 - sizeof(int)) >> 32);
return 0;
}