Modulo Frage
-
heyo,
if(i % 2) /* Rest bedeutet ungerade Zahl */
wieso ist das eine ungerade Zahl??? ich komme irgendwie nicht hinter das verständnis... bin noch anfänger
greez
haimi
-
% liefert den Rest einer Division.
Also 7%3 = 1
3 geht in 7 2 mal, 1 restund jetzt rechne mal
1%2
2%2
3%2
4%2
5%2
...zum if: In C ist alles was nicht 0 ist, wahr.
-
Haimi schrieb:
if(i % 2) /* Rest bedeutet ungerade Zahl */
wieso ist das eine ungerade Zahl??? ich komme irgendwie nicht hinter das verständnis...jede ganze zahl, die nicht durch 2 teilbar ist, schimpft sich 'ungerade zahl'.
du kannst es auch mitif (i&1)
machen. im binärsystem ist jede zahl ungerade, wenn ihr niederwertigstes bit '1' ist (weil sie dann auch nicht durch 2 teilbar ist).
-
+fricky schrieb:
du kannst es auch mit
if (i&1)
machen.Das geht aber schief, wenn negative Zahlen als Einerkomplement gespeichert werden.
-
^^ damn... du hast recht!
-
ratet mal was (-1 % 2) ist. auch nicht gerade, dass was man erwartet.
-
mazal schrieb:
ratet mal was (-1 % 2) ist. auch nicht gerade, dass was man erwartet.
warum solls gerade sein? -1 teilt nicht durch 2
-
soll nicht gerade sein sondern positiv. das hatt mich mal ein paar stunden gekostet das herauszufinden
-
^^naja, wie shady schon sagte, ist alles was nicht 0 ist 'true'. 'ne if-abfrage sollte also auch mit -1 funzen.
aber wenn's stört, machste einfach:abs(i) & 1
damit sollte namespace invader auch zufrieden sein.