Rav*_*iny 3 c c++ if-statement boolean language-lawyer
今天我正在阅读"Mozilla Coding Style Guideline",我发现了一个我不确定的观点.
以下陈述对他们意味着什么?
不要比较
x == true或x == false.使用(x)或(!x)代替.x == true,其实不同于if (x)!
我不确定这两种方法有何不同.请澄清.
Sou*_*osh 10
的评价x == true和/或x == false依赖于的定义true和false,其可以不具有普遍的相同.
(x)并且(!x)仅基于值进行评估,x并且不依赖于任何平台/实现/标准特定定义.例如,(x)将评估在具有非零值的情况下产生TRUE结果.x
在C,按照C11标准,stdbool.h标题,章节7.18的定义true和false是
真正
它扩展为整数常量1,
假
它扩展为整数常量0
所以,如果x有价值2
x == true将被评估为产生FALSE.(x)将产生真实.因此,为了生成健壮的代码并保持可移植性,最好使用后面的方法.