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

175
Vistas
¿Cómo genera el siguiente programa `C89` cuando se compila en modo C89 y `C99` cuando se compila en modo C99?

Encontré este programa C de la web:

 #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; }

Lo interesante de este programa es que cuando se compila y ejecuta en modo C89, imprime C89 y cuando se compila y ejecuta en modo C99, imprime C99 . Pero no soy capaz de averiguar cómo funciona este programa.

¿Puede explicar cómo funciona el segundo argumento de printf en el programa anterior?

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

0

C99 permite // comentarios de estilo, C89 no. Entonces, para traducir:

C99:

 printf("C%d\n",(int)(90-(-4.5 /*Some comment stuff*/ -4.5))); // Outputs: 99

C89:

 printf("C%d\n",(int)(90-(-4.5/ -4.5))); /* so we get 90-1 or 89 */
over 4 years ago · Santiago Trujillo Denunciar

0

el comentario de línea // se introduce desde C99. Por lo tanto su código es igual a este en C89

 #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5/ -4.5))); return 0; } /* 90 - (-4.5 / -4.5) = 89 */

e igual a esto en C99

 #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5 -4.5))); return 0; } /* 90 - (-4.5 - 4.5) = 99*/
over 4 years ago · Santiago Trujillo Denunciar

0

Debido a que // los comentarios solo existen en C99 y estándares posteriores, el código es equivalente a lo siguiente:

 #include <stdio.h> int main (void) { int vers; #if __STDC_VERSION__ >= 201112L vers = 99; // oops #elif __STDC_VERSION__ >= 199901L vers = 99; #else vers = 90; #endif printf("C%d", vers); return 0; }

El código correcto sería:

 #include <stdio.h> int main (void) { int vers; #if __STDC_VERSION__ >= 201112L vers = 11; #elif __STDC_VERSION__ >= 199901L vers = 99; #else vers = 90; #endif printf("C%d", vers); return 0; }
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