为什么这段代码打印“False”,虽然int的大小大于-1?

时间:2018-02-22 15:44:44

标签: c sizeof

根据下面的代码,int的大小不大于-1。为什么会这样?为什么打印“False”而不是“True”?

#include <stdio.h>
#include <stdlib.h>

int main() {

    if(sizeof(int) > -1) {
        printf("True\n");
    }
    else {
        printf("False\n");
    }

    // Here size of int is equals to 4
    printf("Size of int: %ld\n", sizeof(int));
    return 0;
}

1 个答案:

答案 0 :(得分:3)

sizeof返回size_t这是无符号的,当它与int进行比较时,int被提升为无符号,并且所有1的位表示现在被视为无符号,它大于-1,也大于sizeof int。这就是结果的原因。

size_t的正确格式说明符为%zu