He encontrado 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 C89y cuando se compila y ejecuta en modo C99, imprime C99. Pero no puedo entender cómo funciona este programa.
¿Puedes explicar cómo funciona el segundo argumento de printfen el programa anterior?

//comentario de estilo C ++ se introdujo en C99.gcc. Sinstd=c99obtendrá una advertencia, y si usted lo ignora,gccse sigue interpretar el//como comienzo de un comentario (ah - se han de utilizar-pedantic., Así que tengo que de forma predeterminada.)C89explícitostd=c89en gcc 4.9.2.#if __STDC_VERSION__ >= 199901L, no el//truco del comentario. =)Respuestas:
C99 permite
//comentarios de estilo, C89 no. Entonces, para traducir:C99:
C89:
fuente
El comentario de línea
//se introduce desde C99. Por lo tanto, su código es igual a esto en C89e igual a esto en C99
fuente
Como los
//comentarios solo existen en los estándares C99 y posteriores, el código es equivalente al siguiente:El código correcto sería:
fuente