主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

論理演算子:ショートサーキット& & | |

ショートサーキットを使用した論理演算

説明

expr1 & & expr2は,ショートサーキットの動作を使用した論理演算を表します。つまり,expr1が逻辑0)の場合,expr2は評価されません。それぞれの式は,スカラー逻辑の結果に評価されなければなりません。

expr1 | | expr2は,ショートサーキットの動作を使用した論理演算を表します。つまり,expr1が逻辑1真正的)の場合,expr2は評価されません。それぞれの式は,スカラー逻辑の結果に評価されなければなりません。

すべて折りたたむ

2つのベクトルを作成します。

X = [1 0 0 1 1];Y = [0 0 0 0];

XYにショートサーキット或演算子を使用すると,エラーが返されます。ショートサーキット演算子は,スカラーの論理条件でのみ演算を行います。

関数任何および所有を使用して,それぞれのベクトルを単一の論理条件に縮小します。

任何(X) | |所有(Y)
ans =逻辑1

この式は1或0と等価であるため,最初の条件任何(X)のみを計算した後、逻辑1真正的)に評価されます。

2番目の条件が1番目の条件に依存する論理ステートメントを指定します。次のステートメントでは,除数bがゼロの場合,右辺の関係を評価しても意味がありません。

b = 1;= 20;X = (b ~= 0) && (a/b > 18.5)
x =逻辑1

結果は逻辑1真正的)です。ただし,(b ~ = 0)と評価される場合,MATLAB®では式全体がであると仮定され,その式の評価が早期に終了します。

b = 0を指定して,同じ式を評価します。

b = 0;X = (b ~= 0) && (a/b > 18.5)
x =逻辑0

結果は逻辑0)です。最初のステートメントが逻辑0)と評価されるため,式はショートサーキットされます。

“文件”および“格式”という名前のフィールドをもつ構造体を作成します。

S =结构(“文件”, {“myGraph”},“格式”[])
S =结构体字段:文件:'myGraph'格式:[]

複数の条件が真正にならなければならない場合,如果ステートメントにショートサーキットの式を使用すると便利です。1番目の式が true である場合にのみ 2 番目の式を評価することが意味をなすというように、相互の条件を構築できます。

年代“格式”という名前の空のフィールドが含まれる場合にのみ実行する如果ステートメントを指定します。

如果isfield(年代,“格式”) && isempty(S.Format) S.Format =“使用”结束年代
S =结构体字段:文件:'myGraph'格式:'.png'

最初の条件は,“格式”が構造体年代のフィールドの名前かどうかをテストします。2番目のステートメントは,格式フィールドが空かどうかをテストします。2番目の条件の真偽は1番目の条件に依存しています。1番目の条件が true にならないと 2 番目の条件が true になることはありません。年代には“格式”という名前の空のフィールドがあるため,本体のステートメントが実行され,S.Formatに値“使用”が代入されます。

詳細

すべて折りたたむ

論理ショートサーキット

論理ショートサーキットを使用すると,2番目のオペランドexpr2は,最初のオペランドexpr1によって結果が完全に判定できない場合にのみ評価されます。

論理和および論理或の特性により,論理式の結果はすべての条件が評価される前に完全に判定されることがあります。論理演算子は,式の中の条件が1つでも假であれば逻辑0)を返します。論理演算子は,式の中の条件が1つでも真正であれば逻辑1真正的)を返します。これらの値が1つ検出されることで論理式の評価が完了する場合,式に“ショートサーキットがある”といいます。

たとえば式& & Bにおいて,条件一个が假であるとMATLAB®は条件Bをまったく評価しません。一个が假の場合,Bの値により演算の結果が変わることはありません。

如果またはループ式のコンテキスト内で“のみ”要素単位のおよび|演算子を使用する場合,式の評価にショートサーキットが使用されます。

メモ

ショートサーキットの評価を有効にする場合は,必ず&&演算子と||演算子を使用してください。ショートサーキットにおよび|演算子を使用すると,式の評価結果が論理スカラーにならない場合,予期しない結果が生じる可能性があります。

R2006aより前に導入