Compartilhar via


Instrução Switch

Transfira o controle para um bloco de instrução diferente dentro do corpo do comutador, dependendo do valor de um seletor.

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

Parâmetros

Atributo

Um parâmetro opcional que controla como a instrução é compilada. Quando nenhum atributo é especificado, o compilador pode usar um comutador de hardware ou emitir uma série de instruções if .

Atributo Descrição
mesclar Compile a instrução como uma série de instruções if , cada uma com o atributo flatten .
branch Compile a instrução como uma série de instruções if cada uma com o atributo branch . Nota: Ao usar o Modelo de Sombreador 2.x ou o Modelo de Sombreador 3.0, cada vez que você usa a ramificação dinâmica, consome recursos. Portanto, se você usar a ramificação dinâmica excessivamente ao direcionar esses perfis, poderá receber erros de compilação.
forcecase Forçar uma instrução switch no hardware. Nota: Requer hardware de nível de recurso 10_0 ou posterior.
chamada Os corpos dos casos individuais no comutador serão movidos para sub-rotinas de hardware e o comutador será uma série de chamadas de sub-rotina. Nota: Requer hardware de nível de recurso 10_0 ou posterior.

Seletor

Uma variável. As instruções case dentro dos colchetes curly marcar essa variável para ver se SwitchValue corresponde a seu CaseValue específico.

StatementBlock

Uma ou mais instruções.

Comentários

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

É equivalente a:

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

Aqui estão exemplos de usos de atributos de controle de fluxo de chamadas e de 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; 
}

Requisitos

Requisito Valor
parâmetro
Urlmon.h

Confira também

Controle de fluxo