gpt4 book ai didi

c - c中sizeof()的返回值?

转载 作者:行者123 更新时间:2023-11-30 18:22:13 27 4
gpt4 key购买 nike

sizeof 的返回值是多少?为什么这个程序给出 false 作为输出?

 #include <stdio.h>

int main()
{
if(sizeof(int) > -1)
printf("true\n");
else
printf("false\n");


return 0;
}

但这给出了正确的答案。

 #include <stdio.h>

int main()
{
if((int)sizeof(int) > -1)
printf("true\n");
else
printf("false\n");


return 0;
}

最佳答案

Why does this program gives false as output?

if(sizeof(int) > -1)

原因是sizeof返回size_t(无符号),因此在比较之前将-1转换为无符号。

根据标准:

6.3.1.8 Usual arithmetic conversions

....

Otherwise, if the operand that has unsigned integer type has rank greater or equal to the rank of the type of the other operand, then the operand with signed integer type is converted to the type of the operand with unsigned integer type.

请注意,如果第二个操作数的等级更高,则结果会有所不同。我的编译器为 long long 给出 true:

if (sizeof(int) > -1LL)

关于c - c中sizeof()的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957049/

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