主要内容

逻辑运算符:短路&& ||

逻辑运算带有短路

描述

例子

Expr1 && expr2表示逻辑雇佣员工的操作短路的行为.也就是说,expr2如果是,则不计算expr1是合乎逻辑的0).每个表达式必须求值为一个标量逻辑结果。

例子

Expr1 || expr2表示逻辑雇佣员工的操作短路的行为.也就是说,expr2如果是,则不计算expr1是合乎逻辑的1真正的).每个表达式必须求值为一个标量逻辑结果。

例子

全部折叠

创建两个向量。

X = [1 0 0 1 1];Y = [0 0 0 0 0];

使用短路或运算符X而且Y返回一个错误。短路运算符只对标量逻辑条件起作用。

使用任何而且所有函数将每个向量简化为单个逻辑条件。

any(X) || all(Y)
ans =逻辑1

表达式等价于1或0,所以它的评估是合乎逻辑的1真正的)在只计算第一个条件后,任何(X)

指定一个逻辑语句,其中第二个条件取决于第一个条件。在下面的表述中,如果除数为,b,为零。

B = 1;A = 20;X = (b ~= 0) && (a/b > 18.5)
x =逻辑1

结果是合乎逻辑的1真正的).然而,如果(b ~= 0)计算结果为, MATLAB®假设整个表达式为并提前终止对表达式的求值。

指定B = 0对同一个表达式求值。

B = 0;X = (b ~= 0) && (a/b > 18.5)
x =逻辑0

结果是合乎逻辑的0).第一个语句求值为逻辑0),所以这个短语就叫做short-circuits。

创建一个具有命名字段的结构“文件”而且“格式”

S = struct(“文件”, {“myGraph”},“格式”[])
S =带字段的结构:文件:'myGraph'格式:[]

短路表达式在如果当你想要多个条件为真时的语句。条件可以以这样一种方式相互建立,即只有在第一个表达式为真时才有意义计算第二个表达式。

指定一个如果语句,只在年代包含名为“格式”

如果isfield(年代,“格式”) &&为空(S.Format“使用”结束年代
S =带字段的结构:文件:“myGraph”格式:“。png”

第一个条件测试if“格式”字段的名称是否在结构中年代.然后,第二个语句测试格式字段为空。第二个条件的真实性取决于第一个条件。如果第一个条件不成立,第二个条件就不可能成立。自年代是否有一个空字段“格式”, body语句执行并赋值S.Format的值“使用”

更多关于

全部折叠

逻辑短路

使用逻辑短路,第二个操作数,expr2,仅当结果不是由第一个操作数完全确定时才计算,expr1

由于逻辑与或的性质,逻辑表达式的结果有时在计算所有条件之前就已经完全确定了。逻辑而且运算符返回逻辑0)如果表达式中只有一个条件为假。逻辑运算符返回逻辑1真正的)如果表达式中只有一个条件为真。当逻辑表达式的求值因遇到这些值之一而提前终止时,则称该表达式具有短路

例如,在表达式中A & b, MATLAB®不评估条件B如果条件一个是假的。如果一个是假的,那么值呢B不会改变操作的结果。

当你明智地使用元素时而且|的上下文中的操作符如果循环表达式(和只有在这种情况下),它们使用短路来计算表达式。

请注意

总是使用& &而且||操作人员使短路评估。使用而且|当表达式不计算为逻辑标量时,用于短路的运算符可能会产生意想不到的结果。

扩展功能

版本历史

R2006a之前介绍