gpt4 book ai didi

c++ - 在这种情况下 sizeof(int) 返回什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:18 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>

void main()
{
if(sizeof(int)>=-2)
printf("True");
else
printf("False");
}

当我尝试使用 Turbo C++ 编译这段代码时,它返回 False 而不是 True 。但是当我尝试打印 int 的值时,程序返回 2。

这怎么可能?而 sizeof(int) 返回 2 并且是 2>=-2 。

最佳答案

sizeof(int)std::size_t 类型替换, 在大多数实现中 都是无符号的。

比较有符号和无符号会导致奇怪的结果,因为有符号被提升为无符号。

你可以得到如下所示的合理结果

if(static_cast<int>(sizeof(int)) >= -2)

如果您正在使用 C 编译器

if((int)sizeof(int) >= -2)

例如,使用一些警告标志 -Wall 编译您的代码应该最有可能警告有符号/无符号比较。 (如果您没有忽略警告)

关于c++ - 在这种情况下 sizeof(int) 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26609042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com