Para fazermos escolhas da linguagem de programação C, utilizamos o comando switch que possui sua
sintaxe apresentada abaixo. O comando switch utiliza o comando break como parte de
seu corpo não sendo obrigatório em algumas situações.
Sintaxe
switch(valor)
{
case 1:
//bloco de código
break;
case 2:
//bloco de código
break;
default:
//bloco de código
break;
}
Onde
valor: valor int para comparação
case 1..2: Trecho de código para execução caso comparacao seja verdadeira
Fig. 1: Fluxograma do Comando switch
 |
Quando o switch é executado, valor é comparado sequencialmente a todos os valores contidos
nas cláusulas case até que a comparação seja verdadeira. Assim, um bloco de código é executado e
e encerrado ao executar break.
O case default é executado caso nenhum case testado seja verdadeiro. O uso desse case não é obrigatório.
Não é permitido o uso de string como valor e case do comando switch, sendo apenas permitido o uso de
valores numéricos.
Exemplo 1
#include <stdio.h>
int main()
{
int opcao = 2;
switch(opcao)
{
case 1:
printf("tipo 1");
break;
case 2:
printf("tipo 2");
break;
default:
printf(“opcao invalida”);
}
}
Saída
tipo 2
Para a execução de um mesmo trecho de código para mais de um case, basta adicionar as cláusulas
case em sequência ou um abaixo do outra separadas por (:) e apenas um comando break para o encerramento.
Exemplo 2
#include <iostream>
int main ()
{
int valor = 1;
switch(valor)
{
case 1:
case 3: printf("tipo 1"); break;
default: printf("valor inválido"); break;
}
return 0;
}
Saída
tipo 1
Além os uso de mais de um case mostrado acima, C também permite que o operador de intervalo (...) seja utilizado.
Assim, podemos declarar um intervalo de dados sem a necessidade de utilizar vários cases quando esses são uma
quantidade considerável.
Exemplo 2.1
#include <stdio.h>
int main()
{
int valor = 9;
switch(valor)
{
case 0 ... 2:
printf("0...2");
break;
case 3 ... 7:
printf("3...7");
break;
case 8 ... 15:
printf("8...15");
break;
default:
printf("outro intervalo");
break;
}
return 0;
}
Saída
8...15
O uso do switch como no exemplos acima, também pode ser feito com intervalo de dados do tipo char e
enumeradores.