Da Orkey keine neue Frage gestellt hat stelle ich mit Fyxens Erlaubnis eine Frage zur allgemeinen Erheiterung.
In jeder langjaehrigen Programmiererfahrung kommt es unweigerlich dazu, dass man sich die eine oder andere Macke beim Schreiben von wartbarem Code zuzieht, um die Lesbarkeit ungemein zu erhoehen. So ist gerade eben in einem kleinen Testprojekt bei mir folgende Codezeile entstanden ...
Diese Zeile steht mit einigem anderem kram in einer while(1) Schleife.
Die Frage also: Was macht diese Codezeile bei wiederholtem Aufrufen ?
Nach einiger Dankzeit würde ich sagen, der Code folgendes macht:
Er ruft die For-Schleife nur ein einziges mal (Aufgrund von d=!d, was nur einmal true sein kann).
Dabei setzt er den Blauwert sowie, den Grünwert auf 0. Der Rotwert wird nur dann auf 0 gesetzt wenn beim Start der Schleife ++r ++g ++b >=32 sind, ansonsten behält r seinen Wert. Diese informationen werden, nun an eine Funktion geben die aus den Werten rgb eine einzige Variable macht, die die Hintergrundfarbe anzeigt. Daher:
Die Hintergrundfarbe ist rot (r ist nie größer 31 und g, b sind sowieso auf 0 gesetzt). Bei jedem neuem Durchlauf wird r um eins erhöcht und wird heller, bis r g b >= 31 sind, wo r = 0 gesetzt wird (oder einfach nur immer plus eins zählt und so immer heller wird bis es 255 ist und dann wieder umschwingt und von vorne beginnt).
Das ist was ich verstanden hab, bloss irgendwas sagt mir das es nicht stimmen kann, da diese Funktion irgendwie keinen Sinn ergibt o.O .
Also doch wie ich gedacht habe, aber ich verstehe nicht ganz wieso das for-Konstrukt verwendet wird. RGB wird einmal pro Schleifenaufruf aufgerufen, und wenn man das jetzt so ungefährmachen würde, begäne das ganze von vorne. Um es zu veranschaulichen:
Wobei es am Schluss noch einen Spezialfall von 0, 31, 31 gibt.
was meinst du mit Spezialfall von 0,31,31 ?
Aber das ganze lasse ich mal gelten. Zwar wird backgroundcolor = RGB(r, g, b); nicht in so einer Schleife wie bei dir aufgerufen, sondern die Werte aendern sich bei jedem Durchlauf der While-Schleife einmalig, aber was solls.
Ich fand jedenfalls den Code schoen obscure und er verdeutlicht gut die Verwendung des Komma-Operators.
Drakes ist dran.
Wird nichts, Freirunde.
Btw. versteh ich eigentlich doch nicht ganz wie das da mit dem Kommaoperator funktioniert. o_O