switch 语句

根据选择器的值,将控件传输到开关正文中的其他语句块。

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

parameters

属性

一个可选参数,用于控制语句的编译方式。 如果未指定任何属性,编译器可能会使用硬件开关或发出一系列 if 语句。

Attribute 说明
平展 (flatten) 将 语句编译为一系列 if 语句,每个语句都具有 平展 属性。
branch 将语句编译为一系列 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 和调用流控制属性的示例用法:

[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

请参阅

流控制