Datos interesantes sobre la instrucción switch en C

Prerrequisito – Sentencia Switch en C
Switch es una sentencia de control que permite que un valor cambie el control de la ejecución.

// Following is a simple program to demonstrate syntax of switch.
#include <stdio.h>
int main()
{
   int x = 2;
   switch (x)
   {
       case 1: printf("Choice is 1");
               break;
       case 2: printf("Choice is 2");
                break;
       case 3: printf("Choice is 3");
               break;
       default: printf("Choice other than 1, 2 and 3");
                break;  
   }
   return 0;
} 

Producción:

Choice is 2

Los siguientes son algunos datos interesantes sobre la instrucción switch.

1) La expresión utilizada en switch debe ser de tipo integral (int, char y enum). No se permite ningún otro tipo de expresión.

// float is not allowed in switch
#include <stdio.h>
int main()
{
   float x = 1.1;
   switch (x)
   {
       case 1.1: printf("Choice is 1");
                 break;
       default: printf("Choice other than 1, 2 and 3");
                break;  
   }
   return 0;
} 

Producción:

 Compiler Error: switch quantity not an integer

En Java, String también está permitido en el interruptor (Ver esto )

2) Todas las declaraciones que siguen a un caso coincidente se ejecutan hasta que se alcanza una declaración de ruptura.

// There is no break in all cases
#include <stdio.h>
int main()
{
   int x = 2;
   switch (x)
   {
       case 1: printf("Choice is 1\n");
       case 2: printf("Choice is 2\n");
       case 3: printf("Choice is 3\n");
       default: printf("Choice other than 1, 2 and 3\n");
   }
   return 0;
} 

Producción:

Choice is 2
Choice is 3
Choice other than 1, 2 and 3
// There is no break in some cases
#include <stdio.h>
int main()
{
   int x = 2;
   switch (x)
   {
       case 1: printf("Choice is 1\n");
       case 2: printf("Choice is 2\n");
       case 3: printf("Choice is 3\n");
       case 4: printf("Choice is 4\n");
               break;
       default: printf("Choice other than 1, 2, 3 and 4\n");
                break;
   }
   printf("After Switch");
   return 0;
}

Producción:

Choice is 2
Choice is 3
Choice is 4
After Switch

3) El bloque predeterminado se puede colocar en cualquier lugar. La posición predeterminada no importa, aún se ejecuta si no se encuentra ninguna coincidencia.

// The default block is placed above other cases.
#include <stdio.h>
int main()
{
   int x = 4;
   switch (x)
   {
       default: printf("Choice other than 1 and 2");
                break;        
       case 1: printf("Choice is 1");
               break;
       case 2: printf("Choice is 2");
                break;
   }
   return 0;
}

Producción:

Choice other than 1 and 2

4) Las expresiones integrales utilizadas en las etiquetas deben ser expresiones constantes

// A program with variable expressions in labels
#include <stdio.h>
int main()
{
    int x = 2;
    int arr[] = {1, 2, 3};
    switch (x)
    {
        case arr[0]: printf("Choice 1\n"); 
        case arr[1]: printf("Choice 2\n");
        case arr[2]: printf("Choice 3\n");
    }
    return 0;
}

Producción:

Compiler Error: case label does not reduce to an integer constant

5) Las declaraciones escritas en los casos anteriores nunca se ejecutan Después de la declaración de cambio, el control se transfiere al caso coincidente, las declaraciones escritas antes del caso no se ejecutan.

// Statements before all cases are never executed
#include <stdio.h>
int main()
{
   int x = 1;
   switch (x)
   {
       x = x + 1;  // This statement is not executed
       case 1: printf("Choice is 1");
               break;
       case 2: printf("Choice is 2");
                break;
       default: printf("Choice other than 1 and 2");
                break;                   
   }
   return 0;
} 

Producción:

Choice is 1

6) Dos etiquetas de caja no pueden tener el mismo valor

// Program where two case labels have same value
#include <stdio.h>
int main()
{
   int x = 1;
   switch (x)
   {
       case 2: printf("Choice is 1");
               break;
       case 1+1: printf("Choice is 2");
                break;
   }
   return 0;
} 

Producción:

Compiler Error: duplicate case value

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *