When use || and | in if?
4 ビュー (過去 30 日間)
古いコメントを表示
Hello,
when can I use and | in command if?
For example:
if a||b
if a| b
Thank you
0 件のコメント
採用された回答
Azzi Abdelmalek
2014 年 4 月 26 日
a||b will return 1 if the first expression a is true, without evaluating the second expression b
Example
2==2 || hhh % even hhh is not defined Matlab will not evaluate it, because the first expression 2==2 is true
a&&b will return 0 if the first expression a is false without evaluating the second expression b
6 件のコメント
Azzi Abdelmalek
2014 年 4 月 26 日
編集済み: Azzi Abdelmalek
2014 年 4 月 26 日
Because Matlab, in both case (| or | | ) evaluate the first expression h which is not defined.
Azzi Abdelmalek
2014 年 4 月 26 日
It's better to use | |, this can make your code faster, when the first expression is true, Matlab doesn't need to evaluate the second one.
その他の回答 (1 件)
dpb
2014 年 4 月 26 日
Depends entirely on the purpose...the double logical operators short-circuit and return only a scalar whereas the single ones are point-by-point operators over the full dimension of the two operands and return a matrix of the same size.
doc relop
has further details and info
2 件のコメント
Jan
2014 年 4 月 27 日
編集済み: Jan
2014 年 4 月 27 日
@John: When a and b are scalars, both versions are equivalent. But the first one || is slightly faster (nano-seconds for scalar operands...), when the first expression is true already. When a and/or b is a vector, you need the , which is equivalent to |or(a==3, b==2). But then the vector expression in the if command is tricky, because implicitly this is performed:
expr = or(a==3, b==2);
if all(expr) && ~isempty(expr) ...
This is at least confusing or can even be a bug, if this behavior is not intended.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!