103

&MATLABのと&&論理演算子の違いは何ですか?

4

7 に答える 7

97

単一のアンパサンド&は論理AND演算子です。ダブルアンパサンド&&も、短絡動作を採用する論理AND演算子です。短絡とは、結果が第1オペランド(左側)によって完全に決定されない場合にのみ、第2オペランド(右側)が評価されることを意味します。

A&B(AとBが評価されます)

A && B(BはAが真の場合にのみ評価されます)

于 2009-09-04T14:00:40.227 に答える
38

&&スカラー入力を||取り、常に短絡します。 |配列入力を&受け取り、if/whileステートメントでのみ短絡します。割り当てについては、後者は短絡しません。

詳細については、これらのドキュメントページを参照してください。

于 2009-09-08T12:02:50.357 に答える
17

他の人がすでに述べたように、&論理AND演算子&&あり、短絡AND演算子です。これらは、オペランドの評価方法や、配列またはスカラーで動作するかどうかが異なります。

  • &(AND演算子)および|(OR演算子)は、要素ごとに配列を操作できます。
  • &&および||は、結果が第1オペランドによって完全に決定されない場合にのみ、第2オペランドが評価される短絡バージョンです。これらはスカラーでのみ動作し、配列では動作しません。
于 2009-09-04T14:07:15.863 に答える
8

どちらも論理AND演算です。ただし、&&は「短絡」演算子です。MATLABドキュメントから:

これらは、結果が第1オペランドによって完全に決定されない場合にのみ、第2オペランドを評価するという点で、短絡演算子です。

詳しくはこちらをご覧ください

于 2009-09-04T14:01:26.183 に答える
6

&は論理要素単位の演算子であり、&&は論理短絡演算子(スカラーでのみ動作可能)です。

たとえば(私の構文はご容赦ください)。

もしも..

A = [True True False True]
B = False
A & B = [False False False False]

..また..

B = True
A & B = [True True False True]

の場合&&、右のオペランドは左のオペランドがtrueの場合にのみ計算され、結果は単一のブール値になります。

x = (b ~= 0) && (a/b > 18.5)

それが明確であることを願っています。

于 2009-09-04T14:03:28.460 に答える
4

&&および|| スカラーを操作する短絡演算子です&と| 配列を操作し、またはループ式のコンテキストでのみ短絡を使用します。ifwhile

于 2009-09-04T14:02:27.743 に答える
2

条件文(IF、WHILEなど)で使用する引数を作成する際の経験則として、常に&&/||を使用することをお勧めします。そうしない非常に正当な理由がない限り、フォーム。2つの理由があります...

  1. 他の人が述べているように、&&/||の短絡動作 ほとんどのCのような言語に似ています。その類似性/親しみやすさは、一般的にそれを支持するポイントと見なされます。
  2. &&または||を使用する フォーム使用すると、ベクトル引数の意図を決定するための完全なコードを記述する必要があります。a = [1 001]およびb=[0 1 0 1]の場合、a&bは真ですか?それとも偽ですか?MATLABの&のルールを思い出せません。ほとんどの人はできません。一方、&&または||を使用する場合は、条件を解決するためにコードを「完全に」記述する必要があります。

&と|のベクトルのMATLABの解決に依存するのではなく、これを行うと、コードは少し冗長になりますが、はるかに安全で保守が容易になります。

于 2011-08-16T05:21:21.383 に答える