根据下面的代码,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;
}
答案 0 :(得分:3)
好sizeof
返回size_t
这是无符号的,当它与int
进行比较时,int被提升为无符号,并且所有1的位表示现在被视为无符号,它大于-1
,也大于sizeof int
。这就是结果的原因。
size_t
的正确格式说明符为%zu
。