Share via


switch ステートメント

セレクターの値に応じて、スイッチ本体内の別のステートメント ブロックに制御を転送します。

[Attribute] switch( Selector ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break;

パラメーター

属性

ステートメントのコンパイル方法を制御する省略可能なパラメーター。 属性が指定されていない場合、コンパイラはハードウェア スイッチを使用するか、一連の if ステートメントを出力できます。

属性 説明
フラット化 (flatten) ステートメントを一連の if ステートメントとしてコンパイルし、それぞれ flatten 属性を使用します。
分岐 branch 属性を持つ一連の if ステートメントとしてステートメントをコンパイルします。 メモ:シェーダー モデル 2.x またはシェーダー モデル 3.0 を使用する場合、動的分岐を使用するたびにリソースが消費されます。 そのため、これらのプロファイルをターゲットにしたときに動的分岐を過剰に使用すると、コンパイル エラーが発生する可能性があります。
forcecase ハードウェアで switch ステートメントを強制します。 メモ:機能レベル 10_0 以降のハードウェアが必要です。
call スイッチ内の個々のケースの本体はハードウェア サブルーチンに移動され、スイッチは一連のサブルーチン呼び出しになります。 メモ:機能レベル 10_0 以降のハードウェアが必要です。

セレクター

変数。 中かっこ内の case ステートメントは、それぞれこの変数チェックして、SwitchValue が特定の CaseValue と一致するかどうかを確認します。

StatementBlock

1 つ以上の ステートメント

注釈

[branch] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

次に相当します。

[branch] if( a == 2 )
    return 3;
else if( a == 1 )
    return 1;
else if( a == 0 )
    return 0;
else
    return 6;

forcecase 属性と呼び出しフロー制御属性の使用例を次に示します。

[forcecase] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

[call] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

要件

要件
ヘッダー
Urlmon.h

関連項目

フロー制御