Оператор switch
Передача управления в другой блок инструкций в теле переключателя в зависимости от значения селектора.
[Attribute] switch( Selector ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break; break; break;
Параметры
-
Атрибут
-
Необязательный параметр, определяющий способ компиляции инструкции. Если атрибут не указан, компилятор может использовать аппаратный коммутатор или выдавать последовательность операторов if .
attribute Описание преобразовать в плоский формат Скомпилируйте оператор как последовательность операторов if , каждая из которых имеет плоский атрибут. ветвь Скомпилируйте инструкцию как последовательность операторов if с атрибутом branch . Примечание: При использовании шейдерной модели 2.x или шейдерной модели 3.0 каждый раз при использовании динамического ветвления вы потребляете ресурсы. Таким образом, при чрезмерном использовании динамического ветвления при выборе этих профилей могут возникать ошибки компиляции. forcecase Принудительное применение оператора switch в оборудовании. Примечание: Требуется оборудование уровня компонентов 10_0 или более поздней версии. вызывает Тела отдельных случаев в коммутаторе будут перемещены в аппаратные подпрограммы, а переключатель будет являться серией вызовов подпрограмм. Примечание: Требуется оборудование уровня компонентов 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;
}
Требования
Требование | Значение |
---|---|
Заголовок |
|