Ja razumeh, a evo i objasnjenja.
U prvom for-u imamo ovo:
Code:
for (b = c = 10; a =
"Ovo nije code obfuscation... \ /* Prvu liniju sam ja promenio, objasnjenje sledi kasnije */
TFy!QJu ROo TNn(ROo)SLq SLq ULo+\
UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\
NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\
HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\
T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\
Hq!WFs XDt!" [b++ + 21];)
Znaci da u pocetku imamo b = 10 i c = 10, zasto 10?
Imamo
Code:
putchar ( ++c=='Z' ? c = c / 9 : 33 ^ (b&1));
koji ispisuje c/9 ako je c == 'Z' ( 90 u ascii kodu ), znaci kada je c == "Z", ispisujemo c/9 = 10, a 10 u ascii kodu je niko drugi no "\n", to omogucava prelazak na liniju svakih 80 karaktera.
Objasnjenje za 33 ^ (b&1).
Code:
b = 10 -> 001010
b&1 -> 000000 = 0
b = 11 -> 001011
b&1 -> 000001 = 1
b = 12 -> 001100
b&1 -> 000000 = 0
.
.
.
Znaci da b&1 menja stalno vrednost, 01010101...
33 -> 100001
0 -> 000000
1 -> 000001
33^0 -> 100001 = 33 = "!"
33^1 -> 100000 = 32 = " "
Sta sve ovo znaci?
To znaci da svaki put kada ulazimo u drugu for petlju, ako c != "Z", ispisujemo " " ili "!". U zavisnosti od variable b.
I poslednje:
Code:
for(; a-- > 64 ; )
Cemu ovo?
Pogledajmo sta se desava kad udjemo prvi put u for petlju ( u prvu for petlju )
b = 10
c = 10
a = "Ovo nije code obfuscation... \
TFy!QJu ROo TNn(ROo)SLq SLq ULo+\
UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\
NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\
HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\
T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\
Hq!WFs XDt!" [b++ + 21];
Koliko vredi a?
b++ + 21 = 31.
Trideset i prvi karakter je "T", prvo slovo na drugoj liniji, i posto svaki put povecavamo b, prva linija nikad nije upotrebljena, znaci da mozemo da ispisemo sta god hocemo :)
T = 84 u ascii kodu, znaci, druga petlja ce se vrteti 84 - 64 puta = 20,
b = 11, znaci 20 puta cemo ispistati " ",
sledeci put,
b = 11,
b++ + 21 = 32,
znaci da je a = F = 70 po ascii-u, znaci da cemo 6 puta ispistati "!", jer je b povecan za 1, znaci b = 12, ( b = 12 zato sto imamo b++ + 21, postincrementacija, ko ne zna sta je to i cemu sluzi neka se ne javlja ), znaci posto je b = 12, ipisujemo 33^b&1 = 33.
Eto, nadam se da sam bio jasan, ako nekome nesto nije jasno, neka se slobodno javi.
Cao