【发布时间】:2017-02-05 10:26:21
【问题描述】:
出于不值得一提的原因,我想知道布尔表达式是否有标准定义的值。例如
int foo () {
return (bar > 5);
}
背景是我担心我们的团队将 TRUE 定义为不同于 1 的东西,我担心有人可能会这样做:
if (foo() == TRUE) { /* do stuff */ }
我知道最好的选择是简单地做
if (foo())
但你永远不知道。
是否有为布尔表达式定义的标准值,还是取决于编译器?如果有,标准值是否包含在 C99 中? C89呢?
【问题讨论】:
-
有一个标准类型
bool,其常量true和false在C99以来的标准标头stdbool.h中定义。 -
要完成尤金所说的,您可能会对这个链接感兴趣:en.cppreference.com/w/c/types/boolean
-
谢谢。我实际上正在寻找有争议的事实来 1)更改 TRUE 的定义,以及 2)使用符合 C99 的编译器(现在,我们正在使用符合 C89 的编译器)