【问题标题】:Does all conditions get checked in an if statement even if the first one is false?即使第一个条件为假,是否所有条件都在 if 语句中进行检查?
【发布时间】:2015-07-12 14:30:45
【问题描述】:

如果我有:

bool foo = false; bool bar = true;

如果(foo && bar)

if 语句是否检查 bar 是否为真,还是因为 foo 已经为假而跳过它?

【问题讨论】:

  • 在类似 C 的语言中,它是短路的,因此在您的情况下只检查 foo
  • 取决于语言。有时在实施上。
  • 谢谢 :) 我一直在考虑这个问题,因为有时 bar 可能是一个函数,如果 foo 为 false,您可能希望避免使用该函数。
  • @Husenap 为了保持良好的代码可读性/质量,我不建议这样做。
  • @addy2012 好吧,就我而言,我有 if(foo && Input.Getkeydown())

标签: logic short-circuiting


【解决方案1】:

你指的叫short-circuit evaluation,会不会发生取决于:

  • 您正在使用的编程语言
  • 在某些情况下,实施(语言定义既不强制也不禁止)
  • 在某些情况下,具体情况(语言明确允许但不保证,实现可能会根据具体情况选择是否短路)
  • 您使用的确切运算符(某些语言提供两种写“and”的方式,一种是“eager”,一种是“short-circuit”

请注意,它不是if 语句的属性,它只是采用您使用逻辑运算符产生的单个布尔表达式;表达式同样可以分配给布尔变量,作为函数参数传递,等等。

【讨论】:

  • 感谢您的回答:)
猜你喜欢
  • 2014-01-05
  • 2018-12-19
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多