Ich habe den folgenden Code von Stack Overflow 404 Not Found Error Seite kopiert.Wie druckt dieser Code 404?
# define v putchar
# define print(x)
main(){v(4+v(v(52)-4));return 0;}/*
#>+++++++4+[>++++++<-]>
++++.----.++++.*/
print(202*2);exit();
#define/*>[email protected]*/exit()
Der obige Code kompiliert fein und druckt auf der Konsole. Ich dachte die Aussage drucken (202 * 2); ist verantwortlich für den Druck , aber ich bin nicht richtig, weil die Änderung der Zahlen in dieser Aussage auch druckt.
Könnte jemand mir helfen, diesen Code zu verstehen und wie er druckt ?
Ich poste die Kompilierungsausgabe für Ihre Referenz, da es Kommentare gibt, die besagen, dass dieser Code nicht kompiliert wird. Die Datei mit dem obigen Code ist Test.c.
gcc Test.c -o-Test
Test.c: 3: 1: Warnung: Rückgabetyp Standardwert ist 'int' [-Wimplicit-int] main() {v (4 + v (v (52) -4)); return 0;}/*^Test.c: In der Funktion 'main': Test.c: 1: 12: Warnung: implizite Deklaration der Funktion 'putchar' [-Wimplicit- function-declaration] # define v putchar ^ Test.c: 3: 8: Anmerkung: bei Expansion von Makro 'v' main() {v (4 + v (v (52) -4)); Rückgabe 0;}/* ^ Test.c: Auf oberster Ebene: Test.c: 6: 14: Warnung: Datendefinition hat keinen Typ oder Speicherklasse print (202 * 2); exit(); ^ Test.c: 6: 14: Warnung: Geben Sie standardmäßig 'int' in der Deklaration von 'exit' [-Wimplicit-int] Test.c: 6: 14: Warnung: widersprüchliche Typen für die integrierte Funktion 'exit '
./test
putchar (52) Ausgänge 4; 52-4 = 48; putchar (48) gibt 0 aus; 48 + 4 = 52; putchar (52) outpus 4 erneut. –
https://meta.stackoverflow.com/questions/252184/whats-the-joke-in-the-stack-overflow-404-page-code – rsp
Nur fragen: Liebe Migration zu MSO-Wähler: können Sie bitte ein wenig hinzufügen Rechtfertigung? Ich denke ich verpasse hier etwas, warum sollte migriert werden? –