int main()
{
unsigned long a= 100000;
long b = -1;
if (b > a)
printf("yes\n");
else
printf("No\n");
return 0;
}
为什么输出来了"是"当我们知道100000时> -1。因此它应该打印" NO"但是天真,我真的能得到它
答案 0 :(得分:5)
当您比较long
和unsigned long
时,两者首先转换为unsigned long
,因此(取决于平台)-1
值变为0xFFFFFFFF
。结果很清楚。
答案 1 :(得分:2)
在这一行:
if (b > a)
您正在将unsigned long
与long
进行比较,从而导致错误。
只需更改
unsigned long a= 100000;
到
long a= 100000;