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

ISO标准C中#define TRUE (~FALSE)是否合规?求TRUE的规范来源

C语言中TRUE宏定义的规范说明
  • ISO C标准从未定义过大写的TRUE和FALSE宏,只有C99及后续版本通过<stdbool.h>头文件规定了小写的true、false以及_Bool类型,其中true等价于1,false等价于0。
  • 你看到的#define TRUE (~FALSE)属于非标准自定义写法:如果FALSE被定义为0,那~FALSE在有符号整数语境下的值确实是-1(补码规则下全二进制位为1对应-1)。这种写法可能出现在老代码或特定项目的自定义逻辑里,但完全不在标准规范的范畴内。
  • 从标准逻辑来说,条件判断中所有非零值都会被判定为“真”,所以TRUE定义为1或-1在if(TRUE)这类场景下效果一致,但如果直接用这个值参与数值运算,-1会和标准预期的1产生完全不同的结果,这也是这类非标准定义的风险点。
  • 可靠的规范依据就是ISO C标准中关于<stdbool.h>的相关章节,标准只认可小写的布尔常量,大写版本均为项目或平台自行定义,无统一标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 01:14:53