MATLAB逻辑运算符: && 和 &的区别

3
如果我想确保一个 if 语句只有在两个条件都为真时才执行,那么我应该在语句的子句之间使用 && 还是 &
例如,我应该使用
if a == 5 & b == 4

或者
if a == 5 && b == 4

我知道前者是逐个元素进行操作,而后者可以进行短路运算,但不太明白这是什么意思。


1个回答

5
对于标量布尔条件,建议使用 &&。短路意味着如果第一个条件为false,则不会评估第二个条件,但是你知道结果无论如何都是false。无论是&还是&&,只有在表达式的两侧都为true时才会返回true,但是如果操作数之一是矩阵,则&可以返回矩阵结果。
此外,我认为在Matlab中应该使用 == 进行比较,而不是用=(赋值)。

顺便问一下,为什么你不想要一个AND条件来短路呢?因为它只有在所有条件都为真时才会为真,所以如果第一个条件被评估并且结果是假的,那么继续评估就是浪费处理能力吧..? - CaptainProg
@CaptainProg 有时候你想评估函数以获取副作用。 - sverre
Sverre,你能详细说明一下吗? - CaptainProg
@CaptainProg 请查看 https://dev59.com/rXM_5IYBdhLWcg3wSA8U - sverre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接