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)
将产生真实.因此,为了生成健壮的代码并保持可移植性,最好使用后面的方法.