将布尔类型变量与"== 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
Run Code Online (Sandbox Code Playgroud)
如果一个强烈的愿望仍然使用==,!=像许多作风问题,最好遵循您的组的编码准则.
缺乏小组的编码指南 - 制作它们.
使用<stdbool.h>能够访问bool, true, false而不是代码TRUE,FALSE.
@Eugene Sh.
哪一个更安全?"== TRUE"或"!= FALSE"
请注意,比较a == TRUE可能会意外失败,因为操作数被比较为整数,FP或指针,而不是布尔值.这可能无法比较真实性,a即使TRUE是布尔值1,也应该是非布尔值,除了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 { ... }
Run Code Online (Sandbox Code Playgroud)
考虑"真值"返回非零的情况,也许不是1.
if(islower('a') == TRUTH) ... // The if() block might or might not execute
if(islower('a')) ... // The if() block will execute
Run Code Online (Sandbox Code Playgroud)
a != 0或者a != false往往更安全.
风格:我发现==代码更易于遵循,!=而否定会为人们增加心理复杂性.例