メインコンテンツ

論理演算のショートサーキット

ショートサーキットは、&& (AND) 演算子および || (OR) 演算子を含む論理式によって示されます。

&& 演算子を含む論理式は、左辺の式が false と評価されると式全体も false と評価されます。この場合、左辺の式によって結果が既に確定しているため右辺の式は評価されません。

同様に、|| 演算子を含む論理式の場合、左辺の式が true と評価されると、左辺の式によって結果が確定するため右辺の式は評価されません。このショートサーキットを使用した論理式の評価は、結果が既に確定している場合の不要な評価を回避して実行を最適化するのに役立ちます。

Condition オブジェクティブおよび MCDC オブジェクティブのショートサーキットの動作

Condition オブジェクティブおよび MCDC オブジェクティブの論理演算子と論理式は、デッド ロジックの解析時やテストの生成時に、ショートサーキットと見なされる場合と見なされない場合があります。次の表は、その違いについての考慮事項をまとめたものです。

Condition オブジェクティブおよび MCDC オブジェクティブのショートサーキットについての考慮事項:

モデリング要素Condition オブジェクティブおよび MCDC オブジェクティブのショートサーキットについての考慮事項

論理ブロック (スタンドアロン/カスケード)

Condition オブジェクティブおよび MCDC オブジェクティブは CovLogicBlockShortCircuit が ON の場合のみショートサーキット

Enabled Subsystem

Condition オブジェクティブおよび MCDC オブジェクティブは常にショートサーキットなし。

Triggered Subsystem

Condition オブジェクティブおよび MCDC オブジェクティブは常にショートサーキットなし。

Enabled and Triggered Subsystem

Condition オブジェクティブおよび MCDC オブジェクティブは常にショートサーキットなし。

MATLAB®、Stateflow® (C または MATLAB をアクション言語として使用)、その他の Simulink® ブロック (Fcn、If)

Condition オブジェクティブおよび MCDC オブジェクティブは常にショートサーキット

メモ

  • MATLAB で要素単位の演算子 &|if 式や while 式で使用される場合は、ショートサーキットされます。

  • Simulink では、代入ステートメントで使用されるショートサーキット演算子 &&|| に対して Condition オブジェクティブと MCDC オブジェクティブが定義されていますが、ショートサーキットなしの要素単位の演算子 &| に対してこれらのオブジェクティブは定義されていません。詳細については、Stateflow チャートのモデル カバレッジ (Simulink Coverage)を参照してください。

Condition オブジェクティブのショートサーキットの動作

次の表は、Condition オブジェクティブについて、CovLogicBlockShortCircuit パラメーターによる違いをまとめたものです。

CovLogicBlockShortCircuit パラメーターに基づく Condition オブジェクティブのショートサーキットについての考慮事項

ブロックCondition オブジェクティブ CovLogicBlockShortCircuit が ON の場合の条件式CovLogicBlockShortCircuit が OFF の場合の条件式

3 つの端子をもつ論理 AND ブロック

Condition 'F'、端子 2

(in1 && ~in2)

(~in2)

3 つの端子をもつ論理 OR ブロック

Condition 'F'、端子 2

(~in1 && ~in2)

(~in2)

式 (u1 && u2 && u3) を含む MATLAB 関数またはチャート

'u2' False

(u1 && ~u2)

(u1 && ~u2)

if ステートメント内、または遷移の一部に条件式 (u1 & u2 & u3) を含む MATLAB 関数またはチャート

'u2' False

(u1 & ~u2)

(u1 & ~u2)

MCDC オブジェクティブのショートサーキットの動作

次の表は、CovLogicBlockShortCircuit パラメーターに基づいて変化するオブジェクティブの違いをまとめたものです。

CovLogicBlockShortCircuit パラメーターに基づく MCDC オブジェクティブのショートサーキットについての考慮事項:

ブロックMCDC オブジェクティブCovLogicBlockShortCircuit が ON の場合の MCDC の式CovLogicBlockShortCircuit が OFF の場合の MCDC の式

3 つの端子をもつ論理 AND ブロック

入力端子 2 が false の出力の式

(in1 && ~in2)

(in1 && ~in2 && in3)

入力端子 2 が true の出力の式

(in1 && in2 && in3)

(in1 && in2 && in3)

式 (u1 && u2 && u3) を含む MATLAB 関数またはチャート

入力端子 2 が false の出力の式

(in1 && ~in2)

(in1 && ~in2)

入力端子 2 が true の出力の式

(in1 && in2 && in3)

(in1 && in2 && in2)

if ステートメント内、または遷移の一部に式 (u1 & u2 & u3) を含む MATLAB 関数またはチャート

入力端子 2 が false の出力の式

(in1 & ~in2)

(in1 & ~in2)

入力端子 2 が true の出力の式

(in1 & in2 & in3)

(in1 & in2 & in2)

メモ

MCDC 式がカスケードされたロジックから派生している場合、論理ブロックと同様の定義に従います。

詳細については、カスケード論理ブロックの MCDC の解析 (Simulink Coverage)の「MCDC の論理式のショートサーキット」を参照してください。

ConditionMCDC の結果に対する CovLogicBlockShortCircuit パラメーターの影響

場合によっては、CovLogicBlockShortCircuit パラメーターに基づいて MCDC オブジェクティブのカバレッジ結果が次のように変わることがあります。

CovLogicBlockShortCircuit パラメーターが OFF の場合、すべての入力が検討されます。

Logical operator block with In1 and In2 as inputs and Out1 as output.

CovLogicBlockShortCircuit パラメーターに基づく Condition オブジェクティブのショートサーキットについての考慮事項:

ブロックCondition オブジェクティブCovLogicBlockShortCircuit が ON の場合の Condition の式CovLogicBlockShortCircuit が OFF の場合の Condition の式

3 つの端子をもつ論理 AND ブロック

Condition 'F'、端子 3

(in1 && in2 && ~in2) (デッド ロジック)

(~in2) (アクティブ ロジック)

CovLogicBlockShortCircuit パラメーターに基づく MCDC オブジェクティブのショートサーキットについての考慮事項:

ブロックMCDC オブジェクティブCovLogicBlockShortCircuit が ON の場合の MCDC の式CovLogicBlockShortCircuit が OFF の場合の MCDC の式

3 つの端子をもつ論理 AND ブロック

入力端子 2 が false の出力の式

(in1 && ~in2) (アクティブ ロジック)

(in1 && ~in2 && in2) (デッド ロジック)