2012-01-21 121 views
3

如果我想确保if语句只在两个条件都为真时才执行,我应该在语句的子句之间使用&还是&&MATLAB逻辑操作符:&& vs&

例如,我应该用

if a == 5 & b == 4 

if a == 5 && b == 4 

我明白,前者是按元素,后者能够短路,但我不是这意味着什么明确的。

+1

MATLAB文档讨论了运算符短路[这里](http://www.mathworks.co.uk/help/techdoc/matlab_prog/f0-40063.html#f0-39129),'&&'和' ||''operators [here](http://www.mathworks.co.uk/help/techdoc/ref/logicaloperatorsshortcircuit.html)和元素明确的运算符'&'和'|'[here](http:/ /www.mathworks.co.uk/help/techdoc/ref/logicaloperatorselementwise.html)。 – Chris

回答

5

对于标量布尔条件,我建议你使用&&。短路意味着第二个条件不被评估,如果第一个是,但是你知道结果是错误的。 &&&只有在表达式的两边都为真时才会成立,但如果其中一个操作数是矩阵,则&可以返回矩阵结果。

此外,我相信在Matlab比较应该与==,而不是与=(转让)。

+0

呵呵,感谢==提示! – CaptainProg

+0

顺便说一句,为什么你不想要一个AND条件来短路?既然所有的条件都是真的,那么只有这样,如果第一个条件被评估并证明是错误的,那么评估更多就是浪费处理能力。 – CaptainProg

+0

@CaptainProg有时你想评估功能的副作用 – sverre