A instrução switch em C é uma alternativa à instrução ladder if-else-if que nos permite executar múltiplas operações para os diferentes valores possíveis de uma única variável chamada variável switch. Aqui, podemos definir várias declarações nos múltiplos casos para os diferentes valores de uma única variável.
A sintaxe da instrução switch em linguagem c é dado abaixo:
switch(expression){ case value1: //code to be executed; break; //optional case value2: //code to be executed; break; //optional ...... default: code to be executed if all cases are not matched; }
Regras para instrução switch em linguagem C
- O expressão de mudança deve ser de um tipo inteiro ou de caractere.
- O valor do caso deve ser um número inteiro ou uma constante de caractere.
- O valor do caso pode ser usado somente dentro da instrução switch.
- O declaração de interrupção no caso do switch não é obrigatório. É opcional. Se não houver nenhuma instrução break encontrada no caso, todos os casos serão executados presentes após o caso correspondente. É conhecido como Cair em o estado da instrução switch C.
Vamos tentar entender pelos exemplos. Estamos assumindo que existem as seguintes variáveis.
int x,y,z; char a,b; float f;
Chave válida | Chave inválida | Caso válido | Caso inválido |
---|---|---|---|
mudar (x) | mudar (f) | caso 3; | caso 2.5; |
mudar (x> y) | mudar (x + 2,5) | caso 'a'; | caso x; |
mudar (a+b-2) | caso 1+2; | caso x+2; | |
mudar(função(x,y)) | caso 'x'>'y'; | caso 1,2,3; |
Fluxograma da instrução switch em C
Funcionamento da instrução switch case
Primeiro, a expressão inteira especificada na instrução switch é avaliada. Este valor é então comparado um por um com os valores constantes dados nos diferentes casos. Se uma correspondência for encontrada, todas as instruções especificadas nesse caso serão executadas junto com todos os casos presentes após esse caso, incluindo a instrução padrão. Não há dois casos que possam ter valores semelhantes. Se o caso correspondente contiver uma instrução break, todos os casos presentes depois disso serão ignorados e o controle sairá do switch. Caso contrário, todos os casos seguintes ao caso correspondente serão executados.
Como funciona a instrução C switch?
Vamos seguir o processo passo a passo de como a instrução switch funciona em C:
Considere o seguinte declaração de mudança :
Programa C:
#include int main() { int num = 2; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; } return 0; }
Saída
Value is 2
Processo passo a passo:
- O mudar variável num é avaliado. Nesse caso, num é inicializado com o valor 2 .
- O valor avaliado num (2) é comparado com as constantes especificadas em cada rótulo de caso dentro do bloco de comutação .
- O declaração de mudança corresponde ao valor avaliado (2) com a constante especificada no segundo caso (caso 2) . Como há uma correspondência, o programa salta para o bloco de código associado ao caso correspondente (caso 2) .
- O bloco de código associado a caso 2 é executado, que imprime 'O valor é 2' para o console.
- O 'quebrar' palavra-chave está presente no bloco de código de caso 2 . Como resultado, o programa interrompe a instrução switch imediatamente após a execução do bloco de código.
- O controle do programa continua após o declaração de mudança e quaisquer declarações após o declaração de mudança são executados. Nesse caso, não há instruções após a troca, então o programa termina.
- O declaração de mudança avaliou o valor do variável num , encontrou uma correspondência com o caso 2, executou o bloco de código correspondente e saiu do bloco de comutação devido à presença do declaração de 'quebra' .
Exemplo de uma instrução switch em C
Vejamos um exemplo simples de uma instrução switch em linguagem C.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equals to 10'); break; case 50: printf('number is equal to 50'); break; case 100: printf('number is equal to 100'); break; default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Saída
classificar arraylist em java
enter a number:4 number is not equal to 10, 50 or 100 enter a number:50 number is equal to 50
Exemplo de caso de mudança 2
#include int main() { int x = 10, y = 5; switch(x>y && x+y>0) { case 1: printf('hi'); break; case 0: printf('bye'); break; default: printf(' Hello bye '); } }
Saída
hi
Palavra-chave Break e Default na instrução Switch
Vamos explicar e definir o 'quebrar' e palavras-chave 'padrão' no contexto da instrução switch, juntamente com código de exemplo e saída.
1. Quebrar palavra-chave:
O palavra-chave 'quebrar' é usado dentro do bloco de código de cada caso para encerrar a instrução switch prematuramente. Quando o programa encontra um declaração de 'quebra' dentro de um bloco case, ele sai imediatamente do declaração de mudança , impedindo a execução de blocos de casos subsequentes. O declaração de 'quebra' é crucial para evitar declarações switch' 'Cair em' comportamento.
Exemplo:
Vamos pegar um programa para entender o uso do palavra-chave break em C.
#include int main() { int num = 3; switch (num) { case 1: printf('Value is 1 '); break; // Exit the switch statement after executing this case block case 2: printf('Value is 2 '); break; // Exit the switch statement after executing this case block case 3: printf('Value is 3 '); break; // Exit the switch statement after executing this case block default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Saída
Value is 3
Explicação:
Neste exemplo, o declaração de mudança avalia o valor do variável num (qual é 3 ) e combina com caso 3 . O bloco de código associado a caso 3 é executado, imprimindo 'O valor é 3' para o console. O declaração de 'quebra' dentro de caso 3 garante que o programa saia da instrução switch imediatamente após a execução deste bloco case, evitando a execução de quaisquer outros casos.
2. Palavra-chave padrão:
Quando nenhum dos constantes de caso combinar com o expressão avaliada , funciona como um caso pega-tudo . Se não existir nenhum caso correspondente e um caso 'padrão' existe , o bloco de código associado ao 'padrão' caso é executado. É frequentemente usado para lidar com circunstâncias em que nenhuma das situações declaradas se aplica à entrada fornecida.
Exemplo:
Vamos pegar um programa para entender o uso do palavra-chave padrão em C.
#include int main() { int num = 5; switch (num) { case 1: printf('Value is 1 '); break; case 2: printf('Value is 2 '); break; case 3: printf('Value is 3 '); break; default: printf('Value is not 1, 2, or 3 '); break; // Exit the switch statement after executing the default case block } return 0; }
Saída
Value is not 1, 2, or 3
Explicação:
Neste exemplo, o declaração de mudança examina o valor do variável num (qual é 5 ). Como nenhum caso corresponde ao num, o programa executa o bloco de código associado ao caso 'padrão' . O declaração de 'quebra' dentro de caso 'padrão' garante que o programa saia do declaração de mudança depois de executar o 'padrão' bloco de casos.
Tanto o 'quebrar' e palavras-chave 'padrão' desempenham papéis essenciais no controle do fluxo de execução dentro de uma instrução switch. O declaração de 'quebra' ajuda a prevenir o comportamento de queda, enquanto o caso 'padrão' fornece uma maneira de lidar com casos incomparáveis.
A instrução C Switch é falha
Na linguagem C, a instrução switch falha; isso significa que se você não usar uma instrução break no switch case, todos os casos após o case correspondente serão executados.
Vamos tentar entender o estado de queda da instrução switch pelo exemplo abaixo.
#include int main(){ int number=0; printf('enter a number:'); scanf('%d',&number); switch(number){ case 10: printf('number is equal to 10 '); case 50: printf('number is equal to 50 '); case 100: printf('number is equal to 100 '); default: printf('number is not equal to 10, 50 or 100'); } return 0; }
Saída
enter a number:10 number is equal to 10 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Saída
enter a number:50 number is equal to 50 number is equal to 100 number is not equal to 10, 50 or 100
Instrução switch case aninhada
Podemos usar quantas instruções switch quisermos dentro de uma instrução switch. Esse tipo de instrução é chamado de instrução switch case aninhada. Considere o seguinte exemplo.
#include int main () { int i = 10; int j = 20; switch(i) { case 10: printf('the value of i evaluated in outer switch: %d ',i); case 20: switch(j) { case 20: printf('The value of j evaluated in nested switch: %d ',j); } } printf('Exact value of i is : %d ', i ); printf('Exact value of j is : %d ', j ); return 0; }
Saída
the value of i evaluated in outer switch: 10 The value of j evaluated in nested switch: 20 Exact value of i is : 10 Exact value of j is : 20
Vantagens da instrução switch:
Existem diversas vantagens do declaração de mudança em C. Algumas vantagens principais da instrução switch são as seguintes:
O declaração de mudança suporta o uso de um caso padrão que serve como um opção pega-tudo para valores que não correspondem a nenhum dos casos fornecidos. Esse caso padrão lida com informações ou circunstâncias incomuns que não são expressamente declaradas.
Desvantagens da instrução switch:
Existem várias desvantagens do declaração de mudança em C. Algumas desvantagens principais da instrução switch são as seguintes: