为什么sizeof(int)不大于-1?

时间:2014-06-28 12:34:12

标签: c++ c sizeof

这是我的C代码: 为什么输出“假”?????

为什么4> -1 ???

代码:

#include <stdio.h>

int main() {
    if (sizeof(int) > -1)
        printf("True");
    else
        printf("False");
    return 0;
}

2 个答案:

答案 0 :(得分:11)

因为sizeof(int)是无符号的。所以-1被转换为一个大的无符号值。

答案 1 :(得分:4)

因为sizeof产生类型为size_t的值,这是一种无符号类型。在>表达式中,通常的算术转换会将-1转换为无符号类型,这是>结果的类型。由此产生的价值将是巨大的正值。

要获得预期的行为,请使用:

(int) sizeof (int) > -1