Alternar instrução (C)
O switch e case instruções ajuda controle condicional e ramificações operações complexas.O switch instrução transfere o controle para uma instrução em seu corpo.
Sintaxe
instrução de seleção:
**Alternar (expressão)**instruçãoinstrução rotulada:
Caso expressão de constante : instruçãopadrão: instrução
Passa o controle para a instrução cuja caseexpressão de constante corresponde ao valor de Alternar (expressão). O switch instrução pode incluir qualquer número de case instâncias, mas não há duas constantes casos dentro do mesmo switch instrução pode ter o mesmo valor.Execução do corpo da instrução começa com a instrução selecionada e prosseguirá até o final do corpo ou até que uma quebra instrução transfere o controle fora do corpo.
Usar o switch instrução normalmente ter esta aparência:
switch( expressão )
{
declarações
.
.
.
Caso expressão de constante :
instruções executadas se a expressão for igual a
valor dessa expressão de constante
.
.
.
quebra.
padrão:
instruções executadas se a expressão não é igual a
qualquer expressão de constante case
}
Você pode usar o quebra instrução para encerrar o processamento de determinado caso dentro a switch instrução e a ramificação para o fim da switch instrução.Sem quebra, o programa continuará a próxima ocorrência, executar as instruções até que uma quebra ou o final da instrução é alcançado.Em algumas situações, essa continuação pode ser desejável.
O padrão instrução é executada se nenhuma caseexpressão de constante é igual ao valor de Alternar (expressão). Se o padrão instrução for omitida e nenhum case correspondência for encontrada, nenhuma das afirmações na switch corpo são executados.Pode haver no máximo uma padrão instrução.O padrão instrução não precisa vir no final; ele pode aparecer em qualquer lugar no corpo da switch instrução.A case ou padrão rótulo só pode aparecer dentro de um switch instrução.
O tipo de switchexpressão e caseexpressão de constante deve ser integral. O valor de cada caseexpressão de constante deve ser exclusivo dentro do corpo de instrução.
O case e padrão rótulos da switch o corpo de instrução são significativos apenas no teste inicial que determina onde a execução começa no corpo da instrução.Declarações de chave podem ser aninhadas.Quaisquer variáveis estáticas são inicializados antes de executar em qualquer switch instruções.
Observação |
---|
Declarações podem aparecer no topo da formação de instrução composta de switch corpo, mas inicializações incluídas nas declarações não são realizadas.O switch instrução transfere o controle diretamente para uma instrução executável dentro do corpo, ignorando as linhas que contêm inicializações. |
Os exemplos a seguir ilustram switch instruções:
switch( c )
{
case 'A':
capa++;
case 'a':
lettera++;
default :
total++;
}
Todas as três instruções da switch corpo neste exemplo são executadas se c é igual a 'A' desde que uma quebra a instrução não aparecer antes caso a seguir.Controle de execução é transferido para a primeira instrução (capa++;) e continua na ordem pelo resto do corpo.If c is equal to 'a', lettera and total are incremented.Somente total é incrementado se c não é igual a 'A' ou 'a'.
switch( i )
{
case -1:
n++;
break;
case 0 :
z++;
break;
case 1 :
p++;
break;
}
Neste exemplo, um quebra instrução segue cada instrução da switch corpo.O quebra instrução força uma saída no corpo de instrução, depois que uma instrução é executada.Se i é igual a – 1, somente n é incrementado.O quebra após a instrução n++; faz com que o controle de execução passar fora do corpo da instrução, ignorando as instruções restantes.Da mesma forma, se i é igual a 0, apenas z é aumentada. Se i é igual a 1, somente p é incrementado.O final quebra a declaração não é estritamente necessária, uma vez que passa o controle fora do corpo no final da instrução composta, mas ele está incluído para manter a consistência.
Uma única instrução pode executar várias case rótulos, como mostra o exemplo a seguir:
case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' : hexcvt(c);
Neste exemplo, se expressão de constante é igual a qualquer letra entre 'a' e 'f', o hexcvt função é chamada.
Específicos do Microsoft
Microsoft c não limita o número de valores em um switch instrução.O número é limitado apenas pela memória disponível.ANSI c requer pelo menos 257 rótulos case ser permitido em um switch instrução.
O padrão Microsoft C é que as extensões do Microsoft estão habilitadas.Use a opção de compilador /Za para desativar essas extensões.
Específicos do Microsoft final