文档

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

逻辑运算与短路

语法

expr1 & & expr2
expr1 | | expr2

描述

例子

expr1 & & expr2表示一个逻辑操作,使用短路的行为。也就是说,expr2不评价expr1是合乎逻辑的0()。每个表达式必须评估一个标量的逻辑结果。

例子

expr1 | | expr2表示一个逻辑操作,使用短路的行为。也就是说,expr2不评价expr1是合乎逻辑的1(真正的)。每个表达式必须评估一个标量的逻辑结果。

例子

全部折叠

创建两个向量。

X = (1 0 0 1 1);Y = [0 0 0 0 0);

使用短路或操作符XY返回一个错误。短路运算符只能与标量逻辑条件。

使用任何所有函数来减少每个向量一个逻辑条件。

任何(X) | |任何(Y)
ans =逻辑1

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

指定一个逻辑语句,第二个条件取决于第一。下面的语句,它没有意义评价右边的关系如果除数,b,是零。

b = 1;= 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 =结构(“文件”,{“myGraph”},“格式”[])
S =结构体字段:文件:“myGraph”格式:[]

短路表达式是有用的如果语句是正确的。当你想要多个条件条件可以建立在一个另一个以这样一种方式,第二个表达式求值是有意义的,如果第一个表达式是正确的。

指定一个如果只有当执行的语句年代包含一个空的字段命名“格式”

如果isfield(年代,“格式”)& & isempty (S.Format)。格式=“使用”;结束年代
S =结构体字段:文件:“myGraph”格式:“中将”

如果第一个条件测试“格式”结构是一个字段的名字吗年代。第二个语句是否然后测试格式字段是空的。第二个条件的真实性取决于第一。第二个条件永远不可能真正如果第一个条件是不正确的。自年代有一个空的字段命名“格式”,身体语句执行和分配S.Format的值“使用”

更多关于

全部折叠

逻辑短路

与逻辑短路,第二个操作数,expr2,只有当评估结果并不完全取决于第一个操作数,expr1

由于属性的逻辑,或逻辑表达式的结果有时是完全确定之前评估的所有条件。逻辑操作符返回逻辑0()如果连一个条件表达式是错误的。逻辑操作符返回逻辑1(真正的)如果连一个条件表达式是正确的。当评估一个逻辑表达式终止早期遇到这些值之一,据说表达式短路

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

当你使用element-wise&|运营商的上下文如果循环表达式(只有在这种情况下),他们用短路计算表达式。

请注意

总是使用& &| |运营商,使短路评估。使用&|运营商对短路时能产生意想不到的结果表达式不评估逻辑标量。

这个主题有帮助吗?