共用方式為


switch 陳述式

視選取器的值而定,將控制項傳送至切換主體內的不同語句區塊。

[屬性] 參數 ( 選取器 ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break;

參數

屬性

選擇性參數,可控制語句的編譯方式。 如果未指定任何屬性,編譯器可能會使用硬體交換器,或發出一系列的 if 語句。

屬性 描述
扁平化 將 語句編譯為 一系列的 if 語句,每個語句都有 扁平化 屬性。
分支 將 語句編譯為一系列的 if 語句,每個語句都有 分支 屬性。 注意: 當您使用 著色器模型 2.x著色器模型 3.0時,每次使用動態分支時,都會取用資源。 因此,如果您在以這些設定檔為目標時過度使用動態分支,則會收到編譯錯誤。
forcecase 強制硬體中的 switch 語句。 注意: 需要 功能層級 10_0 或更新版本硬體。
call 交換器中個別案例的主體將會移至硬體副程式,而交換器將會是一系列的副程式呼叫。 注意: 需要 功能層級 10_0 或更新版本硬體。

選擇

變數。 大括弧內的 case 語句會分別檢查此變數,以查看 SwitchValue 是否符合其特定 CaseValue。

StatementBlock

一或多個 語句

備註

[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] 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

另請參閱

流程式控制制