Ho trovato questo programma C dal web:In che modo il programma seguente emette `C89` quando è compilato in modalità C89 e` C99` quando è compilato in modalità C99?
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
La cosa interessante con questo programma è che quando viene compilato ed eseguito in modalità C89, stampa C89
e quando viene compilato ed eseguito in C99 modalità, stampa C99
. Ma non sono in grado di capire come funziona questo programma.
Puoi spiegare come il secondo argomento di printf
funziona nel programma sopra?
Suggerimento: il commento in stile '/' di C++ è stato introdotto in C99. –
Bel trucco - ma fallisce con 'gcc'. Senza 'std = c99' riceverai un avvertimento, e se lo ignori,' gcc' interpreterà * ancora * il '//' come inizio di un commento (ah - devi usare '-pedantic' come bene Ho attivato per impostazione predefinita.) – usr2564301
@Jongware Bene, ho ottenuto 'C89' con esplicito' std = c89' in gcc 4.9.2. – ikh