今天我正在浏览 "Mozilla Coding Style Guideline"我发现了一个我不确定的点。
下面的语句是什么意思?
Do not compare
x == true
orx == false
. Use(x)
or(!x)
instead.x == true
, in fact, is different fromif (x)
!
我不确定这两种方法有何不同。请澄清。
最佳答案
评价x == true
和/或 x == false
取决于 true
的定义和 false
,这可能不普遍相同。
(x)
和 (!x)
根据 x
的值进行评估仅且不依赖于任何平台/实现/标准特定定义。例如,(x)
在 x
的情况下将被评估以产生 TRUE 结果具有非零值。
在C
, 根据 C11
标准,stdbool.h
标题,章节 7.18
true
的定义|和 false
是
true
which expands to the integer constant 1,
false
which expands to the integer constant 0
因此,在 x
的情况下有一个值 2
-
x == true
将被评估为产生FALSE。 -
(x)
将产生 TRUE。
因此,为了生成健壮的代码并保持可移植性,最好使用后一种方法。
关于c++ - Mozilla C/C++ 编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229084/