c/c++问题~高手来

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:26:27
int main()
{
#if 0xFFFFFFFFl > 1UL
printf("%d",0xFFFFFFFFl);
#endif
return 1;
}

为什么#if 0xFFFFFFFFl > 1UL是真??

1UL = 无符号1 = 0x00000001
single 和 nosignle 比较转换为 nosignle

不一定是真呀,这是判断机器的long类型是使用32位数据还是32位以上的数。

long 与unsigned long 进行比较时,如果没有明确的类型转换,编译器会自动将其转换为unsigned long。

在32位操作系统下,0xFFFFFFFFl 相当于-1L, 但(unsigned long)-1L却是一个很大的数。