Unverständlicher Code
-
Hallo,
ich wollte fragen, ob mir irgendeiner den folgenden Code freundlicherweise (ausführlich) erklärt, da ich den absolut nicht verstehe..
Auch diese Kombinationen von Zeichen nicht (Auf einen String folgen eckige Klammern, am Ende stehen 2 Doppelpunkte, etc.)main(k){ for(k=0;k<125;++k) putchar( (k + 1) % 25 ? ("[k<qFUF>XB]X=9V=hm9FC" [k / 6] - 52) & 1 << k % 6 ? 64 : 32 : 10); getchar(); }
Vielen Dank
-
Wenn das Problem nur bei ? und : liegt...
bool b = true; printf(b ? "b is true" : "b is false"); // '?' is sozusagen IF, und ':' wäre dann ELSE
-
int main (void) { int k; for(k=0; k<125; k++) { if ((k+1)%25) { char *p = "[k<qFUF>XB]X=9V=hm9FC"; int pos = p[k/6] - 52; if (pos & 1<<k % 6) { putchar (64); } else { putchar (32); } } else { putchar (10); } } getchar(); }
-
Die eckigen Klammern hinter dem String sind ein Array-Index, nur eben auf eine Konstante angewendet.
"01234567"[3] //ist '3'
Das "%" ist der Modulo-Operator (Rest einer Ganzzahlen-Division).
5 % 2 // 5 / 2 = 2 Rest 1, Ergebnis ist 1
-
char c= "01234567"[3];
krass das sowas geht, man lernt nie aus;)
EDIT: für was soll der code gut sein? Will ein Prof. zeigen wie unverständlich man code machen kann?
-
der Code erzeugt
@@@ @@@@ @@ @ @ @@@@ @ @ @ @ @ @ @ @ @ @ @@@ @ @ @ @ @@ @ @ @ @ @@ @ @ @@@ @@@@ @ @ @ @@@@
das ist nur Code reif für den obfuscated C Contest