主要内容

逻辑运算符:Short-Circuit && ||

具有短路的逻辑操作

描述

例子

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

例子

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

例子

全部折叠

创建两个向量。

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

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

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

任何(X) ||
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),因此表达式短路。

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

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

短路表达式在如果语句,当您希望多个条件为真时。条件可以以这样一种方式相互构建:只有在第一个表达式为真时,才有意义计算第二个表达式。

指定一个如果时才执行的语句年代包含一个名为“格式”

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

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

更多关于

全部折叠

逻辑短路

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

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

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

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

请注意

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

扩展功能

R2006a之前介绍过