For-Next gibt falschen Wert zurück?
Übersicht

![]() |
TritonBetreff: For-Next gibt falschen Wert zurück? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hätte nicht gedacht, dass so ein Problem bei mir nochmal eine Frage aufwerfen würde:
Code: [AUSKLAPPEN] For x2 = 0 To 100 Next Print x2 WaitKey End Warum zur Hölle gibt das 101 aus? Ich kanns mir nicht erklären. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei dem For-To von Blitz sind beide Werte inklusive, d.h. wenn du ein "Print x2" in die schleife schreibst, würde der Befehl als letztes noch 100 ausgeben. Und erst mit dem Erhöhen auf 101 terminiert die Schleife.
Rätsel gelöst ![]() Java bzw. C++ Äquivalent: Zitat: int x2;
for(x2 = 0; x2 <= 100; x2++); System.out.println(x2); //bzw. std::cout << x2 << endl; (ist also nichts ungewöhnliches, wenn die letzte Stelle inklusive ist - deswegen gibts in BMax For-Until) |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm. Aber es wird nirgends angewiesen dass es über 100 gehen soll. Erscheint mir nicht logisch und nicht sauber geschrieben...
Klar, man findet einfach einen anderen Weg, dennoch finde ich es unlogisch. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, im Prinzip ist ja, wenn wir jetzt bei Basic-Stil bleiben, eine For-Schleife sowas:
BlitzBasic: [AUSKLAPPEN] x2 = 0 So funktionieren alle For-Schleifen in den großen Sprachen. Vor dem Ende der Schleife wird erhöht und erst wenn der Wert die Grenze übersteigt (d.h. wenn die Schleifenbedingung nicht mehr stimmt), wird terminiert. Es wäre eher unlogisch, wenn die Schleife wissen würde, dass genau beim nächsten Durchlauf die Schleifenbedingung nicht mehr stimmen wird, und dann einfach einen Schritt vorher terminiert. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, so ist es.
Aber logisch wäre für mich, - dass am Anfang der der Schleife die Bedingung die dort steht geprüft wird - die Schleife ausgeführt wird - sie wieder zum Anfang springt und eben erneut geprüft wird ob die Bedingung noch stimmt Falls nein, abbrechen und nächster Befehl nach der Schleife. Also ich hätte das nicht so geschrieben, sass bei "Next" der Zählwert erhöht wird. Schließlich sagt next im Wortsinn nur dass der nächste Durchlauf kommt, nicht dass irgendein Wert geändert werden soll. Das müsste bei "For" getan - und geprüft werden und ggf. halt abgebrochen werden. Nun ja, komisch. Ich dachte schon ich spinne. Danke jedenfalls ![]() |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
du das ist ganz normal
... weil auch eine zahl ist wenn du folgendes machst local A%=-1 for X=0 to 100 a=a+1 print a next kommst du ebenfalls aufs richtige ergebniss. weil for X=0 to 100 geht er 100 schritte plus einen mehr (die null) du kannst for x=1 to 100 machen ... übrigends gehen auch negativ zahlen for X=-100 to 100 usw... |
||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group