Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender o comando switch
  2. Uso de switch com enumerador
  3. Uso do switch com char
  4. switch utilizando return em função
  5. switch com expressões

A linguagem de programação C fornece o comando de escolha switch. Nesta parte do tutorial vamos aprender esse comando.

Os comandos de escolha bem como o seus funcionamentos já foram discutidos em Portugal: Comandos de Escolha sendo a leitura recomendada.

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.

A linguagem C permite que o switch seja utilizando em conjunto com enumeradores. Esse assunto foi visto em C: Enum.

Exemplo 3
#include <stdio.h>

enum opcoes 
{
    UM,
    DOIS
};

int main()
{
    enum opcoes opcao= UM;
    switch(opcao)
    {
        case UM: 
        printf("tipo 1"); break;
        case DOIS: 
        printf("tipo 2");  break;
        }
    }
}
Saída
tipo 1

Além de enumeradores, a linguagem C permite que o switch também possa ser utilizando em conjunto com o tipo char como pode ser visto no exemplo abaixo:

Exemplo 3
#include <stdio.h>
int main()
{
    char letra = 'Z';
    switch(letra)
    {
        
        case 'a':
        case 'A':
            printf("letra Z ou z");
        break;
        case 'z':
        case 'Z':
            printf("letra Z ou z");
        break;
        default:
            printf("outra letra");
            break;
    }
    return 0;
}
Saída
letra Z ou z
  1. 10/03/2025 - revisão 3 - Correção em exemplo 2, adição de switch com char e switch com intervalo
  2. 08/10/2024 - revisão 2 - Ajustes pontuais
  3. 28/09/2023 - revisão 1 - Correção em erros gramaticais, sintaxe, layout e adição de fluxograma e exemplo switch + enum
  4. 19/05/2023 - versão inicial