哪一个更安全?"== TRUE"或"!= FALSE"

Mav*_*off 4 c boolean

将布尔类型变量与以下内容进行比较是否更好:

  1. == FALSE!= FALSE; 要么
  2. == TRUE!= TRUE

chu*_*ica 5

将布尔类型变量与"== FALSE"和"!= FALSE"或"== FALSE"和"== TRUE"进行比较是否更好?

  1. 都不是.

使用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)
  1. 如果一个强烈的愿望仍然使用==,!=像许多作风问题,最好遵循您的组的编码准则.

  2. 缺乏小组的编码指南 - 制作它们.


使用<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往往更安全.


风格:我发现==代码更易于遵循,!=而否定会为人们增加心理复杂性.