Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么sizeof(int)不大于-1?_C++_C_Sizeof - Fatal编程技术网

C++ 为什么sizeof(int)不大于-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

这是我的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;
}

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

因为
sizeof
生成一个类型为
size\t
的无符号值。在
表达式中,通常的算术转换将
-1
转换为无符号类型,该类型是
结果的类型。结果将是一个巨大的正值

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

(int) sizeof (int) > -1

因为
sizeof(int)
通常产生
4
,而
-1
被强制转换为
unsigned int
,这会产生
0x7FFFFFFFFF
启用编译器警告,编译器会告诉你。-1不是真正的代码(
main
必须有函数结果类型)。通常我不会进行反投票,但我看不出有理由否决投票。这是一个骗局——不多也不少(即使对于新用户来说,也很难找到一个)。