For-Schleife wird "übersprungen"
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
HubsiBetreff: For-Schleife wird "übersprungen" |
Fr, Okt 28, 2016 11:29 Antworten mit Zitat |
|
---|---|---|
Rudi Ratlos ist mal wieder zu Gast
Folgender Code: BlitzMax: [AUSKLAPPEN] Function CheckHole:Byte(x_start:Int, y_start:Int, way:Int) Ich bekomme im Debuglog diese Ausgaben (way ist im Testfall immer -1): x_start -> 64 x_start + (4 * way) -> 60 Soweit sind die Werte noch richtig. Der Erwartungswert wenn ich das Programm weiterlaufen lasse wäre dann das er in die For-Schleife reinspringt und eine oder mehrere Zahl(en) ausspuckt (irgendwas zwischen 0 und 20, solange eben bis der Wert größer 0 ist oder die Schleife endet). Problem ist das er nicht in die Schleife geht und gleich den letzten Debuglog (way, -1, auch wieder richtig) ausgibt und wieder stoppt. Warum übergeht er die Schleife? Edit: Ist way=1 dann funktionierts, sprich diese Schleife wird ausgeführt und ich bekomme die Werte die ich brauche |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
BladeRunnerModerator |
Fr, Okt 28, 2016 13:49 Antworten mit Zitat |
|
---|---|---|
Mach aus dem x ein Int anstatt eines Short und es klappt. Anscheinend gibt es da intern irgendwo beim Auswerten eine Bereichsverletzung und deswegen springt er drüber.
Wenn ich kleinere Startwerte einsetze geht es auch mit dem Short, was ebenso dafür spricht. Irgendwo wird da eine negative Zahl kurzfristig erreicht, was Short ja nicht abbildet, die sind ja unsigned. Überhaupt kann ich nur empfehlen nur von den Standardtypen INT und FLOAT abzuweichen wenn es wirklich unumgänglicg ist - wenn es zB um sehr große Datenmengen geht. Für einzelne Schleifenvariablen bleib besser beim Standardtyp. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Thunder |
Fr, Okt 28, 2016 20:44 Antworten mit Zitat |
|
---|---|---|
Short ist unsigned. Daher geht Step -1 nicht.
Ich schätze Mal, dass die -1 zu 65535 umgewandelt wird und dann ist das Problem, dass der Startwert größer ist als der Endwert. Also ist die Schleife vorbei, bevor sie anfing. Ich kann BladeRunners Empfehlung nur beipflichten. Ich hätte allerdings Int und Double genannt (die meisten Floating funktinonen sind auf Double definiert, also gewinnst du nichts, wenn du die zusätzliche Genauigkeit wegschmeißt). |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Hubsi |
Sa, Okt 29, 2016 11:41 Antworten mit Zitat |
|
---|---|---|
Manchmal könnt ich echt selbst draufkommen... Vielen Dank Die Datentypen haben mir nicht zu ersten mal einen kleinen Bug eingebracht. Vielleicht lern ichs doch nochmal | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group