Say I have
If A && B && C
...do something if A = B = C = true
end
Is it faster, however to do:
If ~(A || B || C)
..do something if A or B or C = false
end
I am wondering if the latter statement is faster because it should be able break if any of the conditions are false and not test the rest. But I am wondering if the negation forces all of the conditions to be tested first?

 採用された回答

Fangjun Jiang
Fangjun Jiang 2011 年 9 月 28 日

0 投票

If A is false, then A && B will be short-circuited. No need to use the latter approach. Use the first one because it's easy to read.

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2011 年 9 月 28 日

4 投票

The two expressions are not equivalent.
A && B && C
is true only if A and B and C are all true.
~(A||B||C)
is true only if A and B and C are all false, not if one of them is false.
The logical or equivalent of A && B && C is
~(~A || ~B || ~C)

1 件のコメント

Fangjun Jiang
Fangjun Jiang 2011 年 9 月 29 日
+1, that's another sharp catch!

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Language Support についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by