在c中,在bool中,true == 1和false == 0?

Pio*_*icz 3 c boolean

只是为了澄清我找到了类似的答案但是对于C++,我对编码有点新意,所以我不确定它是否也适用于C语言.

Nei*_*etz 14

更确切地说,任何事情都不0是真的.

所以1是真实的,但也是如此2,3...等等.

  • 取决于你的意思"是真的".标识符`true`是在`<stdbool.h>`中定义的一个宏,它的值特别是`1`(它的类型是`int`).另一方面,当用作条件时,任何非零值都被视为真.这就是为什么像`if(b == true)`这样的东西是危险的; 只写"if(b)"而不是. (4认同)
  • 问题似乎是指特定的实体:`bool``true`和`false`,而不是"使`if`采用真正的分支"的一般值集. (3认同)
  • @AnT如果他不说他是编程新手,那我会讲的。但是很容易看出这就是他的意思。 (2认同)

Eri*_*ert 6

你忘了说你关心的是哪个版本的C。我们假设是这个:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

通过阅读规范可以看到,true和 的标准定义false是1和0,是的。

如果您的问题是关于 C 的不同版本,或者关于和 的非标准定义,那么请提出更具体的问题。truefalse

  • C 的另一个奇怪的怪癖......“true”是一个 int,而不是一个 bool (2认同)
  • [N1256](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf) 是 1999 年 ISO C 标准的草案。最新标准为C11;最新草案是[N1570](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf)。C99 将 `_Bool` 和 `&lt;stdbool.h&gt;` 添加到语言中(当然在 C11 中保留了)。 (2认同)