You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么C语言中sizeof(int) > -1的判断结果为False?

问题原因解析

首先附上问题中的代码:

#include <stdio.h>
main() {
   if (sizeof(int) > -1)
       printf("True");
   else
       printf("False");
}

出现该输出的核心原因是C语言的整数隐式转换规则:

  • sizeof运算符的返回值类型是size_t,这是C标准定义的无符号整数类型
  • 当无符号整数和有符号整数做比较运算时,C语言会默认把有符号整数转换为同宽度的无符号整数后再执行比较
  • 在int占4字节的运行环境下,-1作为有符号int转换为无符号int后的值为4294967295(即2的32次方减1)
  • 程序实际执行的比较逻辑为4 > 4294967295,结果为假,因此输出False

如果需要得到符合直觉的True结果,可以主动把sizeof的返回值强制转换为有符号整数,将判断条件修改为if ((int)sizeof(int) > -1)即可。

内容的提问来源于stack exchange,提问作者Adi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:54:05