为什么(sizeof(int)> -1)为false?

Bha*_*gav 1 c sizeof

你可以证明以下代码:

#include<stdio.h>
int main()
{
    if(sizeof(int) > -1)
    {
            printf("\nTrue\n");
    }
    else
    {
            printf("\nFALSE\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是FALSE.....建议我的原因

use*_*751 7

sizeof(int)具有type size_t,这是一个无符号整数类型.

-1具有类型int,它是有符号整数类型.

将有符号整数与无符号整数进行比较时,首先将有符号整数转换为无符号整数,然后使用两个无符号整数执行比较.

sizeof(int) > (unsigned int)-1是错误的,因为(unsigned int)-1在大多数实现中都是一个非常大的数字(等于UINT_MAX,或者适合的最大数字unsigned int).

  • *将有符号整数与无符号整数进行比较时,首先将有符号整数转换为无符号*仅当无符号整数类型的转换等级大于或等于有符号整数类型的转换等级时才会出现此情况. (4认同)

归档时间:

查看次数:

728 次

最近记录:

7 年,11 月 前