如果我想确保if
语句只在两个条件都为真时才执行,我应该在语句的子句之间使用&
还是&&
?MATLAB逻辑操作符:&& vs&
例如,我应该用
if a == 5 & b == 4
或
if a == 5 && b == 4
我明白,前者是按元素,后者能够短路,但我不是这意味着什么明确的。
如果我想确保if
语句只在两个条件都为真时才执行,我应该在语句的子句之间使用&
还是&&
?MATLAB逻辑操作符:&& vs&
例如,我应该用
if a == 5 & b == 4
或
if a == 5 && b == 4
我明白,前者是按元素,后者能够短路,但我不是这意味着什么明确的。
对于标量布尔条件,我建议你使用&&
。短路意味着第二个条件不被评估,如果第一个是假,但是你知道结果是错误的。 &
或&&
只有在表达式的两边都为真时才会成立,但如果其中一个操作数是矩阵,则&
可以返回矩阵结果。
此外,我相信在Matlab比较应该与==
,而不是与=
(转让)。
呵呵,感谢==提示! – CaptainProg
顺便说一句,为什么你不想要一个AND条件来短路?既然所有的条件都是真的,那么只有这样,如果第一个条件被评估并证明是错误的,那么评估更多就是浪费处理能力。 – CaptainProg
@CaptainProg有时你想评估功能的副作用 – sverre
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