Dass hier ein Modulo verwendet wird, ist ersichtlich, aber ich verstehe nicht, was mit %2 <--- gemeint ist. Durch 2 teilbar? Dann ergibt das False für mich aber keinen Sinn. Oder bedeutet das grob übersetzt "Wenn der Countdown nicht durch 2 teilbar ist..."?
Ja, das ergibt auch so keinen Sinn. Der Rückgabewert einer Modulooperation ist ein Integer, 'false' ist aber ein boolean. Du solltest eigentlich auch eine Warnung wegen eines impliziten Typecasts bekommen.
Bei false ist es noch realtiv harmlos, wichtig wird sowas erst bei 'true'. Denn das ist nur ein Wert der wahr ist, aber noch lange nicht jeder wahre wert. Soll heißen:
|
C-/C++-Quelltext
|
1
2
3
4
|
int * ptr;
if(ptr) //wenn der zeiger ungleich 0 ist
...
if(true==ptr) //wenn der zeiger gleich true ist - wir er vermutlich nie sein.
|
Ich bin mir gerade nicht ganz sicher, was der Standard genau darüber sagt, aber sowas hat damals mal für einen echt schwer zu findenden Fehler gesorgt. Also 'true' und 'false' nicht einfach so in Abfragen einbauen, sondern am besten nur für Zuweisungen an booleans verwenden.