Ich habe dieses C-Programm aus dem Internet gefunden:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
Das Interessante an diesem Programm ist, dass es beim Kompilieren und Ausführen im C89-Modus gedruckt wird C89
und beim Kompilieren und Ausführen im C99-Modus gedruckt wird C99
. Aber ich kann nicht herausfinden, wie dieses Programm funktioniert.
Können Sie erklären, wie das zweite Argument von printf
im obigen Programm funktioniert?
//
Kommentar im C ++ - Stil wurde in C99 eingeführt.gcc
. Ohne dassstd=c99
Sie eine Warnung erhalten, und wenn Sie sie ignorieren,gcc
wird dies immer noch//
als Beginn eines Kommentars interpretiert (ah - Sie müssen es auch verwenden-pedantic
. Ich habe das standardmäßig aktiviert.)C89
mit explizitstd=c89
in gcc 4.9.2.#if __STDC_VERSION__ >= 199901L
, nicht den//
Kommentar-Trick. =)Antworten:
C99 erlaubt
//
Kommentare im Stil, C89 nicht. Also, um zu übersetzen:C99:
C89:
quelle
Der Zeilenkommentar
//
wird seit C99 eingeführt. Daher ist Ihr Code in C89 gleichund gleich in C99
quelle
Da
//
Kommentare nur in C99 und späteren Standards vorhanden sind, entspricht der Code den folgenden Angaben:Richtiger Code wäre:
quelle