Entwickler-Ecke
Basistechnologien - Frage zu einer Schleife ??
PeterS - Fr 10.09.10 12:39
Titel: Frage zu einer Schleife ??
Hallo ich bin der Peter!
Ich hab C# für die umsetzung meiner Ideen entdeckt, mir gleich ein gutes Lehrbuch besorgt und losgelegt.
Habe noch keine vorhergehenden Programmierkenntnisse gehabt. Jetzt bin ich da auf eine Schleife in dem Lehrbuch gestoßen:
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; } |
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.
Kann mir das jemand kurz erklären? ... :)
Moderiert von
Kha: C#-Tags hinzugefügt
PeterS - Fr 10.09.10 13:27
Hab mal gelernt, dass -8 * 2 = -16 ist und erst bei -8 * -2 = +16 ergibt. Vielleicht stellt das meine Problematik damit etwas klarer :)
Yogu - Fr 10.09.10 13:30
Hallo und :welcome:
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? :o
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 :eyecrazy:
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...
PeterS - Fr 10.09.10 13:44
Nuja .. das Buch hab ich bisher ganz gut verstanden :) denke eher es liegt an meiner innerlichen Interpretation der dinge :)
Nach dem ersten durchlaufen der Schleife ist q = 0 ... zumindest bei mir xD und p = 2
Beim zweiten Durchlauf greift die While-Schleife ja nicht, und dann soll der Computer von q den Wert von p abziehen. Das ergibt bei mir -2 (minus zwei) beim Debugger allerdings 2
Da fängts ja schon mit meinem unverständnis an :)
Kha - Fr 10.09.10 13:48
PeterS hat folgendes geschrieben : |
| und dann soll der Computer von q den Wert von p abziehen. |
Nein, schau es dir noch einmal an. q wird p - q = 2 - 0 = 2 zugewiesen.
PeterS - Fr 10.09.10 13:57
Och neee *koppklatsch* :idea: jetz ist klar.
Da hab ich mich ja von irgendwas ganz bös verwirren lassen
:oops:
Danke für die Hilfe :D
danielf - Fr 10.09.10 14:07
:D
Lernen solltest du aus der Geschichte, dass q und p sehr sehr schlechte Variablennamen sind. Sie sollten immer sprechend sein, damit man besser nachvollziehen kann was passiert. Auch Kommentare helfen an dieser Stelle.
Viel Spaß mit C#
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!