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 C89
y 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 printf
en el programa anterior?
//
comentario de estilo C ++ se introdujo en C99.gcc
. Sinstd=c99
obtendrá una advertencia, y si usted lo ignora,gcc
se sigue interpretar el//
como comienzo de un comentario (ah - se han de utilizar-pedantic
., Así que tengo que de forma predeterminada.)C89
explícitostd=c89
en 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