Entendendo Switch-Case em C: Sintaxe, Exemplos e Boas Práticas
O Que É a Declaração Switch em C?
O construto switch avalia uma única expressão e roteia o fluxo do programa para o rótulo case correspondente. Se nenhuma correspondência for encontrada, o bloco default opcional roda. Esta ferramenta de tomada de decisão é especialmente útil ao lidar com valores discretos e constantes como opções de menu, códigos de erro ou seleções do usuário.
Cada case é identificado unicamente por uma expressão constante. Quando o valor da expressão corresponde a um rótulo case, o bloco correspondente de declarações executa, e a execução sai do switch (a menos que um break seja omitido, o que causa fall-through).
Sintaxe do Switch-Case
switch (expressão) {
case constante1: // declarações break;
case constante2: // declarações break;
// …
default: // declarações break;
} // declarações seguintes ao switch
- A
expressãodeve avaliar para tipo integral ou enum. - Rótulos case são valores constantes; duplicatas criam ambiguidade e devem ser evitadas.
- Cada
casetermina com dois-pontos e é seguido por um bloco de código. - Use
breakpara terminar um case; sem ele, a execução continua nos cases subsequentes (fall-through). - O bloco
defaulté opcional e roda apenas quando nenhum case corresponde.
Como a Declaração Switch Funciona
O fluxograma a seguir ilustra o processo de decisão para uma declaração switch:

Exemplo 1: Switch Básico
#include <stdio.h>
int main() {
int num = 8;
switch (num) {
case 7: printf("Value is 7"); break;
case 8: printf("Value is 8"); break;
case 9: printf("Value is 9"); break;
default: printf("Out of range"); break;
}
return 0;
}
Saída:
Value is 8
Exemplo 2: Usando Default
#include <stdio.h>
int main() {
int language = 10;
switch (language) {
case 1: printf("C#\n"); break;
case 2: printf("C\n"); break;
case 3: printf("C++\n"); break;
default: printf("Other programming language\n");
}
return 0;
}
Saída:
Other programming language
Exemplo 3: Cases Combinados
#include <stdio.h>
int main() {
int number = 5;
switch (number) {
case 1: case 2: case 3: printf("One, Two, or Three.\n"); break;
case 4: case 5: case 6: printf("Four, Five, or Six.\n"); break;
default: printf("Greater than Six.\n");
}
return 0;
}
Saída:
Four, Five, or Six.
Switches Aninhados
Switches podem ser aninhados, permitindo tomada de decisão hierárquica. O exemplo a seguir demonstra um fluxo simples de autenticação:
#include <stdio.h>
int main() {
int ID, password;
printf("Please Enter Your ID:\n");
scanf("%d", &ID);
switch (ID) {
case 500:
printf("Enter your password:\n");
scanf("%d", &password);
switch (password) {
case 0: printf("Welcome Dear Programmer\n"); break;
default: printf("Incorrect password\n");
}
break;
default: printf("Incorrect ID\n");
}
return 0;
}
SAÍDA:
Please Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer

Por Que Switch É Preferível a If-Else Extensivo
Embora cadeias if-else possam alcançar a mesma lógica, elas se tornam difíceis conforme o número de opções aumenta. Declarações switch oferecem sintaxe mais clara, melhor legibilidade e podem ser otimizadas pelo compilador em jump tables para expressões constantes.
Regras para Usar Switch
- A expressão de controle deve ser tipo integral ou enum.
- Rótulos case devem ser valores constantes, únicos.
- Cada rótulo case termina com dois-pontos.
- Use
breakpara prevenir fall-through não intencional. - Apenas um rótulo
defaulté permitido. - Switches aninhados são permitidos e frequentemente úteis.
Principais Pontos
- Switch é uma ferramenta robusta de tomada de decisão para valores discretos.
- Sempre inclua
break(a menos que fall-through intencional). - Mantenha rótulos case únicos e constantes.
- O bloco
defaulté opcional mas recomendado para tratamento de erro. - Switches aninhados fornecem lógica de decisão em camadas.
Linguagem C
- Dominando a Instrução Switch em C#: Sintaxe, Exemplos e Boas Práticas
- Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
- Dominando Switch-Case em C++: Sintaxe, Uso e Exemplos Práticos
- Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Dominando Collections em C#: Tutorial Prático com Exemplos do Mundo Real
- Função Print() do Python: Guia Prático com Exemplos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Função round() em Python Explicada com Exemplos Práticos