C++ 为什么sizeof(int)不大于-1?
这是我的C代码: 为什么输出为“假” 为什么4>-1 代码:C++ 为什么sizeof(int)不大于-1?,c++,c,sizeof,C++,C,Sizeof,这是我的C代码: 为什么输出为“假” 为什么4>-1 代码: #include <stdio.h> int main() { if (sizeof(int) > -1) printf("True"); else printf("False"); return 0; } #包括 int main(){ if(sizeof(int)>-1) printf(“真实”); 其他的 printf(“假”); 返回0; } 因为s
#include <stdio.h>
int main() {
if (sizeof(int) > -1)
printf("True");
else
printf("False");
return 0;
}
#包括
int main(){
if(sizeof(int)>-1)
printf(“真实”);
其他的
printf(“假”);
返回0;
}
因为sizeof(int)是无符号的。因此-1被转换为一个大的无符号值。因为sizeof
生成一个类型为size\t
的无符号值。在
表达式中,通常的算术转换将-1
转换为无符号类型,该类型是
结果的类型。结果将是一个巨大的正值
要获得预期的行为,请使用:
(int) sizeof (int) > -1
因为
sizeof(int)
通常产生4
,而-1
被强制转换为unsigned int
,这会产生0x7FFFFFFFFF
启用编译器警告,编译器会告诉你。-1不是真正的代码(main
必须有函数结果类型)。通常我不会进行反投票,但我看不出有理由否决投票。这是一个骗局——不多也不少(即使对于新用户来说,也很难找到一个)。