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;
}
要求
要求 | 值 |
---|---|
标头 |
|