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ähr machen würde, begäne das ganze von vorne. Um es zu veranschaulichen:
Wobei es am Schluss noch einen Spezialfall von 0, 31, 31 gibt.
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.
Taschenrechneraufgabe: 72340241558605825, wobei ich mir nicht sicher bin, ob du wirklich 0x101011101111001 und nicht die Binärzahl 101011101111001, was 22393 wäre.
Wäre es nicht 72340241558605820 (sagen mir die Konverter, kann aber nicht sein, wegen der letzten 1 O.o), und nein, ich meinte schon hexadezimal, sonst hätte ich 0b als präfix genommen. (hättest du doch nur nur 22393 geschrieben) Du bist dran.
Wäre es nicht 72340241558605820 (sagen mir die Konverter, kann aber nicht sein, wegen der letzten 1 O.o), und nein, ich meinte schon hexadezimal, sonst hätte ich 0b als präfix genommen. (hättest du doch nur nur 22393 geschrieben) Du bist dran.
...
Also wenn ich's in einen Python-Interpreter eingebe, gibt der mir Mogs Ergebnis.