将布尔类型变量与以下内容进行比较是否更好?
== FALSE
和!= FALSE
;或== TRUE
和!= TRUE
?答案 0 :(得分:5)
将布尔类型变量与“ == FALSE”和“!= FALSE”或与“ == FALSE”和“ == TRUE”进行比较是否更好?
对于C布尔类型_Bool
,请不要使用==
或!=
来评估真实性。
@Steve Summit @Antti Haapala @John Bode
_Bool x;
if (x) // to assess truth-ness
if (!x) // to assess false-ness
如果仍然强烈希望使用==
,!=
,就像许多样式问题一样,最好遵循小组的编码准则。
缺少小组的编码准则-制定准则。
使用<stdbool.h>
来访问bool, true, false
,而不要使用代码TRUE
,FALSE
。
@Eugene Sh.
哪个更安全使用? “ == TRUE”或“!= FALSE”
请注意,比较a == TRUE
可能会意外失败,因为操作数是作为整数,FP或指针而不是布尔进行比较的。即使a
是布尔值1,TRUE
是非布尔值且“真”值不是1的非真实性,这也可能无法进行比较。
double a = 0.999999;
// Both are false
if (a == TRUE) { ... } // The arithmetic value of `a` is used, not its "truth"
if (a == FALSE) { ... }
// better as
if (a) { ... } // As if `a != 0`
else { ... }
考虑“真相”返回非零(也许不是1)的情况。
if(islower('a') == TRUTH) ... // The if() block might or might not execute
if(islower('a')) ... // The if() block will execute
a != 0
或a != false
往往更安全。
样式:我发现==
代码比!=
更易于遵循,因为否定会增加人们的思维复杂度。 Example
答案 1 :(得分:1)
.front_mn_item:hover {
background-color:#fff !important;
}
.front_mn_item:hover a {
color:#111 !important;
background-color:#fff !important;
}
和TRUE
不是标准C,因此不应使用它们,除非您可能正在针对使用它们的旧C90库(例如Windows API)进行编码。FALSE
。它可以用作_Bool
,应设置为bool
中的值true
或false
stdbool.h
前缀,例如:is
。while(!isReady) { ... }
和==
运算符同样安全。理论上,两者都可以与!=
和=
混合使用,但是任何体面的编译器都会对此发出警告(“表达式中的赋值” /“可能的不正确赋值”)。答案 2 :(得分:-1)
Everey语法具有其自身的含义,没有更好或更安全的方法。但是您应该始终将这些特殊之处进行比较,以决定哪种语法在您的情况下更安全:
stdbool.h
,以防止整数和布尔值混淆。if (something==TRUE)
而不是if(something)
,因为这表示您是指something
中的布尔值而不是整数。确保您的temateates同意此语法,并确保您已考虑案例1!