Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

196
Vistas
No puedo entender la salida de este código.
#include<stdio.h> int main() { int a=1,i; for(i=0;i<3;i++) switch((++a)-1) { case 0:printf("\nzero"); case 1:printf("%d.one",i+1); case 2:if(i%2==0) printf("\n\t%d.Two",i+1); else printf("\n%d.Two",i+1); default:printf("\t%d.step",i+1); } }

su salida es:

 1.one 1.Two 1.step 2.Two 2.step 3.step

No puedo entender por qué hay seis salidas donde deberían ser tres, supongo.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Porque sin break; declaración, cada caso continuará en el siguiente.

 switch((++a)-1) { case 0:printf("\nzero"); // Without a break;, the next line gets executed as well! case 1:printf("%d.one",i+1); // Execution continues here, printing "%d.one", even though we are in case 0 case 2:if(i%2==0) { printf("\n\t%d.Two",i+1); } else { printf("\n%d.Two",i+1); } // The default will get run as well, for lack of a "break;" default:printf("\t%d.step",i+1); }

Esto debe escribirse correctamente como:

 switch((++a)-1) { case 0: printf("\nzero"); break; case 1: printf("%d.one",i+1); break; case 2: if(i%2==0) { printf("\n\t%d.Two",i+1); } else { printf("\n%d.Two",i+1); } break; default: printf("\t%d.step",i+1); break; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda