for(;P("\n"),R--;P("\"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4)%2)
-
for(;P("\n"),R--;P("\"))for(e=C;e--;P("_"+(*u++/8)%2))P("|"+(*u/4)%2)
kann mir jemand diese zeile erklären
für anfänger wenn es geht
-
Nicht ohne zu wissen was P, R usw. ist.
So alleine lässt sich das ganze zeugs nicht kompilieren.
-
for(;P("\n"),R--;P("\")) { for(e=C;e--;P("_"+(*u++/8)%2)) { P("|"+(*u/4)%2) } }naja ob das geht ... ist übelstes rumgehacke weil du da Zeigeraddition machst usw. ... normal sollte das nicht geschluckt werden ... hmm u scheint schonmal ein Zeiger zu sein ... am ehesten ein integer ... sonnst würde da nicht 8 sondern 8.0(f) usw. stehen ... hmm ... e = C hmm der Code ist mist.
-
http://www.alice-dsl.net/cavit8/ALLESQUATSCH.htm
wenn ihr euch diesen text mal durchlesen wollt?
bin darauf irgendwo gestoßen
kann mir diese zeile aber nicht erklären da ich kein C programmiere
-
die Zeile ist quatsch ... selbst wenn die Zeigeraddition beabsichtigt wäre ... was ich bezweifel ... wäre die Hälfte des Codes ein String, da \" ein " ist und dadurch das " zum abschluss des Strings fehlt ... insgesamt kommen wir also mit den ganzen " nicht ganz aus

-
Eigentlich sieht der Aufruf von P in der außeren for-Schleife auch wohl so aus: P("|")
Zumindest steht dies so in der Humor-Ecke dieser Seite:
http://www.c-plusplus.net/geschichte.htm
Da kommt man dann auch mit den ganzen " hin.
Ob das ganze Zeug Sinn macht oder nicht, unterhaltsam finde ich die Story aber dennoch.
Greetz
-
#include <cstdio> #define P(x) std::printf(x) const int C = 24 int main() { int R = C; int e; char* u = "Hello World!"; for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); return 0; }Geht übrigens auch C++ ;).
C gibt die Anzahl der Reihen an... bei u hab ich einfach mal char* als Typ angenommen. Naja, vllt erkennt ja jemand den Sinn darin.Gruß
Don06
-
int main() { #define P(x) printf(x) int C,R,e; char *u,sz[]="Hello World!"; u=sz; R=2; C=strlen(u)/R; for(;P("\n"),R--;) { for(e=C;e--;) { P("| "+(*u/4)%2); if(!( (*u/8)%2) ){ P("_"); } //original //P("_"+(*u/8)%2); u++; } P("|"); } printf("-----------------------Kontrolle"); u=sz; R=2; C=strlen(u)/R; for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); return 0; }wenn man das ein wenig entwirrt, ist es doch eigentlich ganz einfach. Würg!
(*u/4) und (*u/8) sind eigentlich nur für die Verwirrung. Wichtig nur %2, was entweder 0 oder 1 sein kann.
Zu beachten ist, das aus "" eigentlich {'','\0'} wird. Und somit zwei Zeichen oder Byte werden.Und der Witz liegt wohl darin, das man sagen kann, das man das da versteht und völlig logisch ist

Na ja, so ist das Lebben.