Hallo und
PeterS!
PeterS hat folgendes geschrieben : |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| int p = 2;
for (int q = 2; q < 32; q = q * 2) { while (p < q) { p = p * 2; } q = p - q; } | |
Ach du meine Güte, was ist das denn?
Das schlimmste an der Schleife ist, dass die Schleifenvariable
q innerhalb der Schleife verändert wird. Normalerweise sind
for-Schleifen einfach dazu da, zu zählen. Hoch, runter, linear, quadratisch - aber eben immer in eine Richtung. Dein Code soll offensichtlich einfach nur verwirren
PeterS hat folgendes geschrieben : |
| Habe das ganze im Debugger mehr mal durchlaufen und dabei festgestellt, dass dieser wenn q einen wert von -8 (minus acht) hat und die Anweisung in der for-schleife q * 2 nimmt plötzlich +8 (plus acht) rauskommt. |
Und wann genau ist
q bei dir negativ? Wenn ich die Schleife im Debugger laufen lasse, zählt er wie folgt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| p=2, q=0 p=2, q=2 p=4, q=0 p=4, q=4 p=8, q=0 p=8, q=8 p=16, q=0 p=16, q=16 |
PeterS hat folgendes geschrieben : |
| mir gleich ein gutes Lehrbuch besorgt und losgelegt. |
Bist du dir sicher, dass das Lehrbuch gut ist? Wenn solche Codebeispiele darin vorkommen, und die nicht einmal erklärt sind...