C | Lazos y estructura de control | Pregunta 10

# include <stdio.h>
int main()
{
   int i = 0;
   for (i=0; i<20; i++)
   {
     switch(i)
     {
       case 0:
         i += 5;
       case 1:
         i += 2;
       case 5:
         i += 5;
       default:
         i += 4;
         break;
     }
     printf("%d  ", i);
   }
   return 0;
}

(A) 5 10 15 20
(B) 7 12 17 22
(C) 16 21
(D) Error del compilador

Respuesta: (C)
Explicación: Inicialmente i = 0. Como el caso 0 es verdadero, i se convierte en 5, y como no hay declaración de interrupción hasta la última declaración del bloque de cambio, i se convierte en 16. Ahora, en la siguiente iteración, ningún caso es verdadero, por lo que la ejecución se vuelve predeterminada y se convierte en 21.
En C, si un caso es verdadero, el bloque de cambio se ejecuta hasta que encuentra la declaración de ruptura. Si no está presente ninguna declaración de interrupción, todos los casos se ejecutan después del caso verdadero. Si desea saber por qué el interruptor se implementa de esta manera, esta implementación es útil para situaciones como las siguientes.

 switch (c)
 {
    case 'a':
    case 'e':
    case 'i' :
    case 'o':
    case 'u':
      printf(" Vowel character");
      break;
    default :
      printf("Not a Vowel character");; break;
  }

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 *