C 哪个更安全&引用==“真的”;或者说假;

C 哪个更安全&引用==“真的”;或者说假;,c,boolean,C,Boolean,将布尔型变量与以下变量进行比较是否更好: ==FALSE和!=错误;或 ==TRUE和!=是否正确 每个语法都有自己的含义,没有更好或更安全的方法。但是,你应该总是考虑这些特殊的点来比较哪种语法在你的情况下更安全: 在C语言中,数字表示布尔值:0是假,其他数字是真。您可以限制为stdbool.h,以防止整数和布尔值混淆 如果使用C连接到SQL数据库,在SQL中,与NULL的比较不是true也不是false 如果您在团队中工作,我建议所有团队成员使用If(something==TRUE)而不是If

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

  • ==FALSE
    !=错误
    ;或
  • ==TRUE
    !=是否正确

  • 每个语法都有自己的含义,没有更好或更安全的方法。但是,你应该总是考虑这些特殊的点来比较哪种语法在你的情况下更安全:

  • 在C语言中,数字表示布尔值:0是,其他数字是。您可以限制为
    stdbool.h
    ,以防止整数和布尔值混淆
  • 如果使用C连接到SQL数据库,在SQL中,与NULL的比较不是true也不是false
  • 如果您在团队中工作,我建议所有团队成员使用
    If(something==TRUE)
    而不是
    If(something)
    ,因为这表明您指的是布尔from
    something
    而不是整数。请确保您的temameates同意此语法,并确保您已考虑案例1 比较布尔类型变量与“==FALSE”和“!=FALSE”或“==FALSE”和“==TRUE”是否更好

  • 都不是
  • 对于C布尔类型,不要使用
    =
    =评估真实性。

  • 如果仍然强烈希望使用
    ==
    =,就像许多样式问题一样,最好遵循团队的编码准则

  • 缺少团队的编码指导原则-制定它们


  • 使用
    可以访问
    bool,true,false
    ,而不是code
    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!=错误
    往往更安全


    风格:我发现
    ==
    代码比
    更容易理解=因为否定增加了人们的心理复杂性

    • TRUE
      FALSE
      不是标准的C语言,因此不应使用,除非您是针对使用它们的旧C90库(如Windows API)进行编码
    • C中的布尔类型是
      \u Bool
      。它可以用作
      bool
      ,并且应该从
      stdbool.h
    • 需要显式地将布尔值与真/假值进行比较,这表明变量命名很差。布尔值的一个常见命名标准是在它们前面加上
      is
      ,例如:
      while(!isReady){…}
    • ==
      =操作符同样安全。理论上,两者都可能与
      =
      =>混淆,但任何合适的编译器都会为此发出警告(“表达式中的赋值”/“可能不正确的赋值”)

    如果您有一个布尔变量
    b
    ,我的意见是
    If(b)
    If(!b)
    更可取。如果必须使用显式比较,
    If(b!=FALSE)
    If(b==FALSE)
    更可取。与
    TRUE
    进行显式比较可能非常危险,因为
    b
    既不是0也不是1。另请参见中的。使用
    stdbool.h
    中的
    true
    false
    更安全,请不要这样做!使用
    x=FALSE;if(x){…}
    if(!x){
    。为什么还要使用比较?比较返回布尔值(作为
    int
    )或者您是否将
    FALSE
    定义为
    -1
    TRUE
    定义为
    42
    ?除非
    TRUE
    被定义为非1和
    FALSE
    非0,否则最好不要进行显式比较。只需使用
    if(b)
    if(!b)
    。“其他正数是真的”是不完整的。除+/-0以外的所有数字都是真的,包括大于0、小于0、甚至是一个更为相关的引用源,而不是其他各种用户,将是MISRA-C,它强制逻辑/关系/相等操作符被视为布尔函数。C++中也一样。
    if(islower('a') == TRUTH) ...  // The if() block might or might not execute
    if(islower('a'))  ...          // The if() block will execute