-1 的值为 0。 我不明白发生了什么。 #include void-6ren">
gpt4 book ai didi

c - 这段代码的 "False"输出背后的原因是什么?

转载 作者:行者123 更新时间:2023-12-03 18:36:13 24 4
gpt4 key购买 nike

此 C 代码给出输出“False”并且 else 块正在执行。sizeof(int) 的值为 4,但 sizeof(int) > -1 的值为 0。
我不明白发生了什么。

#include <stdio.h>
void main()
{
if (sizeof(int) > -1 )
{
printf("True");
}
else
{
printf("False");
}
printf("\n%d", (sizeof(int)) ); //output: 4
printf("\n%d", (sizeof(int) > -1) ); //output: 0
}

最佳答案

您的 sizeof(int) > -1 测试正在比较两个 无符号 整数。这是因为 sizeof 运算符返回一个 size_t 值,该值属于 unsigned 类型,因此 -1 值被转换为其“等效”表示形式为无符号值,这实际上是 unsigned int 的最大可能值。
要解决此问题,您需要将 sizeof 值显式转换为(有符号的) int :

    if ((int)sizeof(int) > -1) {
printf("True");
}

关于c - 这段代码的 "False"输出背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65509798/

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