即使第一个条件为假,是不是所有条件都在 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 语句中进行检查?的主要内容,如果未能解决你的问题,请参考以下文章

如果第一个条件为假,假设 if-and 语句总是会中断是不是安全? [复制]

为啥即使条件为假,这个“IF”也总是执行?

IF 语句:如果条件为假,如何将单元格留空(“”不起作用)

当条件为假时执行 If 语句 True 块

JavaScript条件语句

当条件为假时不执行其他函数的`if`语句