Short-Circuit AND, &&
ショートサーキットを使用した論理 AND
説明
は、論理ショートサーキットの動作を使用した論理 expr1
&& expr2
AND
演算を表します。つまり、expr1
が logical 0
(false
) の場合、expr2
は評価されません。それぞれの式は、スカラー logical の結果に評価されなければなりません。
例
従属的な論理条件の指定
2 番目の条件が 1 番目の条件に依存する論理ステートメントを指定します。次のステートメントでは、除数 b
がゼロの場合、右辺の関係を評価しても意味がありません。
b = 1; a = 20; x = (b ~= 0) && (a/b > 18.5)
x = logical
1
結果は logical 1
(true
) です。ただし、(b ~= 0)
が false
と評価される場合、MATLAB® では式全体が false
であると仮定され、その式の評価が早期に終了します。
b = 0
を指定して、同じ式を評価します。
b = 0; x = (b ~= 0) && (a/b > 18.5)
x = logical
0
結果は logical 0
(false
) です。最初のステートメントが logical 0
(false
) と評価されるため、式はショートサーキットされます。
構造体のフィールド値の変更
'File'
および 'Format'
という名前のフィールドをもつ構造体を作成します。
S = struct('File',{'myGraph'},'Format',[])
S = struct with fields:
File: 'myGraph'
Format: []
複数の条件が true にならなければならない場合、if
ステートメントにショートサーキットの式を使用すると便利です。1 番目の式が true である場合にのみ 2 番目の式を評価することが意味をなすというように、相互の条件を構築できます。
S
に 'Format'
という名前の空のフィールドが含まれる場合にのみ実行する if
ステートメントを指定します。
if isfield(S,'Format') && isempty(S.Format) S.Format = '.png'; end S
S = struct with fields:
File: 'myGraph'
Format: '.png'
最初の条件は、'Format'
が構造体 S
のフィールドの名前かどうかをテストします。2 番目のステートメントは、Format
フィールドが空かどうかをテストします。2 番目の条件の真偽は 1 番目の条件に依存しています。1 番目の条件が true にならないと 2 番目の条件が true になることはありません。S
には 'Format'
という名前の空のフィールドがあるため、本体のステートメントが実行され、S.Format
に値 '.png'
が代入されます。
入力引数
expr1
, expr2
— 論理式
logical スカラー
論理式。logical スカラーに評価される任意の有効な MATLAB® 式として指定します。
例: isvector(x) && isreal(x)
例: (x > 1) && (x < 10)
データ型: logical
詳細
論理ショートサーキット
"論理ショートサーキット" を使用した場合、論理式の結果が完全に判定されると、論理式の評価が早期に完了することがあります。論理 AND および論理 OR の特性により、すべての条件を評価する前に論理式の結果が完全に判定されることがあります。
論理
and
演算子は、式の中の条件が 1 つでも false であれば logical0
(false
) を返します。論理
or
演算子は、式の中の条件が 1 つでも true であれば logical1
(true
) を返します。
これらの値が 1 つ検出されることで論理式の評価が完了する場合、式に "ショートサーキットがある" といいます。この手法を適切に使用すると、コード内で複雑な比較を効率的に実行できます。
たとえば、式 A && B
において、条件 A
が false であると MATLAB は条件 B
をまったく評価しません。A
が false と判定されると、B
の値によって演算結果が変化することはありません。
ヒント
if
またはwhile
ループ式のコンテキスト内で "のみ" 要素単位の&
および|
演算子を使用する場合、式の評価にショートサーキットが使用されます。ただし、ショートサーキットの評価を有効にするには、必ず
&&
演算子と||
演算子を使用してください。ショートサーキットに&
および|
演算子を使用すると、式の評価結果が logical スカラーにならない場合、予期しない結果が生じる可能性があります。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)