int main()
{
unsigned long a= 100000;
long b = -1;
if (b > a)
printf("yes\n");
else
printf("No\n");
return 0;
}
为什么当我们知道100000> -1时输出为“是”。所以,因此它应打印“NO”,但作为一个天真的,我真的可以得到它不明白简单的C程序if/else结果
int main()
{
unsigned long a= 100000;
long b = -1;
if (b > a)
printf("yes\n");
else
printf("No\n");
return 0;
}
为什么当我们知道100000> -1时输出为“是”。所以,因此它应打印“NO”,但作为一个天真的,我真的可以得到它不明白简单的C程序if/else结果
在这一行:
if (b > a)
你是一个long
,这导致了错误的比较unsigned long
。
简单地改变
unsigned long a= 100000;
到
long a= 100000;
第一个问题'无效的主要()'是定义'主()'一个非常古老的方式,这意味着你使用的是非常过时的资源。 –
第二个问题:您没有启用警告标志或忽略它们。 –
这应该清除一些东西:http://stackoverflow.com/questions/5416414/signed-unsigned-comparisons – adrian008