【问题标题】:Difference between FALSE==var and var==FALSE [closed]FALSE==var 和 var==FALSE 之间的区别 [关闭]
【发布时间】:2014-05-08 00:16:04
【问题描述】:

我一直想知道为什么有些程序员在条件句中使用FALSE == var 而不是var == FALSE。使用前者是否有任何性能提升?我相信后一种格式更具可读性。

【问题讨论】:

  • 没有性能差异,但如果误写为“FALSE = var”则不会编译。看起来很丑。
  • 指定语言。但是在我知道的所有语言中,没有区别。它叫做Yoda Conditions,有些人用它来避免不小心使用=而不是==
  • Related question 你可能会看到。

标签: difference


【解决方案1】:

这只是为了避免意外输入var = FALSE而不是var == FALSE的频繁错误,从而将FALSE分配给var并保证条件为真。

【讨论】:

    【解决方案2】:

    某些语言允许在需要条件的地方进行赋值(例如 C);

    if (a = 5)
    

    这(在某一时刻)导致了一类常见的错误,因为上述分配 5 到 a 然后,由于 5 不为零,进入正文的if。当然,作者的意思是

    if (a == 5)
    

    反之则无法编译代码:

    if (5 = a)
    

    ...因为您不能分配给常量。这样就可以标记错误并将其修复为

    if (5 == a)
    

    对于任何现代(甚至相对较旧)的编译器,都没有必要这样做。使用 lint 设置警告您需要进行比较的分配。

    【讨论】:

    • 我确定我在某处读到过类似的比较: var == FALSE 是更快的比较,而不是 FALSE== var .T.J 答案会更清楚地说明这一点。
    • @Aman:不,在我听说过的任何环境中都没有更快的速度。运算符的两边仍然必须进行评估,并且必须比较结果值,无论您以哪种方式编写它。
    【解决方案3】:

    在含义或性能上没有区别。

    只是避免意外的var = FALSE 分配,以防他们打错了使用这种风格的程序员。

    Yoda conditions 有人打电话给他们。我不推荐他们。但是,如果您发现它们有用,就可以使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 2020-12-13
      • 2013-02-19
      相关资源
      最近更新 更多