# 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