009
14.05.2006, 19:42 Uhr
Pablo
Supertux (Operator)
|
@kaldrin:
++i macht vor der if-Abfrage ein i=i+1. (dez) = (bin) 0 = 00 1 = 01 2 = 10 3 = 11
wenn 3 die Bitmaske bei ++i&3, dann bedeutet es, dass man die ersten 2 Bits "schneidet" (alle andere sind 0). Wenn die Zahl zwischen 0 und 2 liegt und eine 1 dazu addiert wird, dann sieht man, dass in den ersten 2 Bits mind. eine 1 vorhanden ist. Also ist ++i&3 entweder 1 oder 2 oder 3 und alle größer als 0, deswegen für if ist das ein true. Das Einzige Problem mit dieser Abfrage ist, dass wenn i == 4 oder i==5 liefert das ebenfalls true, denn (100 + 1)&3 = 01 > 0.
Jetzt fällt mir auf, was bindet stärker, ++ oder &? Ich würde auf ++ tippen. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! |