Condividi tramite


Istruzione switch

Trasferire il controllo in un blocco di istruzioni diverso all'interno del corpo dell'opzione a seconda del valore di un selettore.

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

Parametri

Attributo

Parametro facoltativo che controlla la modalità di compilazione dell'istruzione. Quando non viene specificato alcun attributo, il compilatore può usare un commutatore hardware o generare una serie di istruzioni if .

Attributo Descrizione
rendere bidimensionale Compilare l'istruzione come una serie di istruzioni if, ognuna con l'attributo flat.
ramo Compilare l'istruzione come una serie di istruzioni if ognuna con l'attributo branch . Nota: Quando si usa il modello di shader 2.x o il modello di shader 3.0, ogni volta che si usano rami dinamici si utilizzano le risorse. Pertanto, se si usa la diramazione dinamica in modo eccessivo quando si esegue la destinazione di questi profili, è possibile ricevere errori di compilazione.
forcecase Forzare un'istruzione switch nell'hardware. Nota: Richiede il livello di funzionalità 10_0 o versione successiva.
chiamare I corpi dei singoli case nel commutatore verranno spostati in subroutine hardware e il commutatore sarà una serie di chiamate subroutine. Nota: Richiede il livello di funzionalità 10_0 o versione successiva.

Selettore

Variabile. Le istruzioni case all'interno delle parentesi graffe controllano ogni variabile per verificare se SwitchValue corrisponde al caseValue specifico.

StatementBlock

Una o più istruzioni.

Commenti

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

Equivale a:

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

Di seguito sono riportati esempi di utilizzo degli attributi di controllo del flusso di chiamata e 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; 
}

Requisiti

Requisito Valore
Intestazione
Urlmon.h

Vedi anche

Controllo flusso