如果/不是结果,请不要理解简单的C程序

时间:2015-06-21 12:43:15

标签: c

int main()
{
    unsigned long a= 100000;
    long b = -1;
    if (b > a)
        printf("yes\n");
    else
        printf("No\n");

    return 0;
 }

为什么输出来了"是"当我们知道100000时> -1。因此它应该打印" NO"但是天真,我真的能得到它

2 个答案:

答案 0 :(得分:5)

当您比较longunsigned long时,两者首先转换为unsigned long,因此(取决于平台)-1值变为0xFFFFFFFF。结果很清楚。

答案 1 :(得分:2)

在这一行:

if (b > a)

您正在将unsigned longlong进行比较,从而导致错误。

只需更改

 unsigned long a= 100000;

  long a= 100000;