即使第一个条件为假,是不是所有条件都在 if 语句中进行检查?
Posted
技术标签:
【中文标题】即使第一个条件为假,是不是所有条件都在 if 语句中进行检查?【英文标题】: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())
【参考方案1】:
你指的叫short-circuit evaluation,会不会发生取决于:
您正在使用的编程语言 在某些情况下,实施(语言定义既不强制也不禁止) 在某些情况下,具体情况(语言明确允许但不保证,实现可能会根据具体情况选择是否短路) 您使用的确切运算符(某些语言提供两种写“and”的方式,一种是“eager”,一种是“short-circuit”请注意,它不是if
语句的属性,它只是采用您使用逻辑运算符产生的单个布尔表达式;表达式同样可以分配给布尔变量,作为函数参数传递,等等。
【讨论】:
感谢您的回答:)以上是关于即使第一个条件为假,是不是所有条件都在 if 语句中进行检查?的主要内容,如果未能解决你的问题,请参考以下文章