Re: if-else-Bedingung - Simulator fehlerhaft! Kategorie: Programmierung (von KlaRa - 10.11.2002 17:17) | |
Als Antwort auf Re: if-else-Bedingung - Simulator fehlerhaft! von André H. - 10.11.2002 12:14
| |
Hallo, ich möchte doch von einem Fehler sprechen. Im Simulator springe ich tatsächlich auf den Befehl im else-Zweig. Ich habe jetzt den Code umformatiert: function func_test() { int a,b,c,d; a=1; b=1; c=0; d=-1; if (a == 1) { d=0; } else { d=1; } } Jetzt steht in jeder Zeile ein Befehl oder eine Klammer. Ich lande trotzdem auf d=1 was mich eigentlich echt irriert. > Das liegt wahrscheinlich daran, da� die Funktion mit "}" endet, dies > aber kein befehl ist, aber dennoch "return;" hei�t. > "}" kann aber im Simulator nicht markiert werden. So wird einfach > der letzte Befehl vor Funktionsende markiert. Es wäre sauber wenn nach d=0 die Funktion verlassen würde. Gruss Klaus > Hallo KlaRa und Milif, > > Ich wei� nicht, was ihr habt, ich hab' grad das Proggie getestet, > und es funzt so wie es soll. > In d steht niemals eine 1 drin immer -1 oder 0. Das kann man ganz einfach > prüfen, indem man d als Global definiert und überwacht. > Was euch wahrscheinlich irretiert, ist, da� beim Einzelschritt > der blaue Balken auch bei der else-Zeile stehen bleibt. > Das liegt wahrscheinlich daran, da� die Funktion mit "}" endet, dies > aber kein befehl ist, aber dennoch "return;" hei�t. > "}" kann aber im Simulator nicht markiert werden. So wird einfach > der letzte Befehl vor Funktionsende markiert. > > Das könnt Ihr ganz einfach so testen: > int d; > > { > int a,b,c/*,d*/; > a=1; > b=1; > c=0; > d=-1; > if (a == 1) > { d=0; } > else > { d=1; > a=0; }//Hier bleibt beim Einzelschritt der Balken immer stehen, > //obwohl diese Zeile nicht ausgeführt wird :-) > } > > thread main > { > func_test(); > } > > MfG André H. > > > > Hallo, > > > > ich habe Dein Programm so eben getestet. Bei mir stellt sich der Fehler genauso wie beschrieben ein. > > Allerdings vermute ich ganz stark, es ist nur ein Fehler des Simulators. Ich habe nach dem If-Statement mal vor dem Ende der Funktion ein Return eingebaut. Man sieht das der else-Zweig, wie er hier soll, dabei nicht ausgeführt wird. > > > > Gruss Klaus > > > > > > > /*Habe heute lange am Problem mit verschachtelten > > > "if u. else"-Bedingungen am Simulator getestet(siehe auch folgendes Testprogr.) > > > Erst beim Einfügen einer Dummy-Operation (z.B. c=0;) nach > > > der else-Klammer wurde die if-Abfrage korrekt durchlaufen, sonst immer der if UND der else -Zweig. > > > Ist das Prob. bekannt oder mache ich was falsch ? > > > Mfg Milf. > > > */ > > > > > > > > > function func_test() > > > { > > > int a,b,c,d; > > > a=1; > > > b=1; > > > c=0; > > > d=-1; > > > if (a == 1) > > > { d=0; } > > > else > > > { d=1; } > > > > > > //**c=0;//**<< nur wenn hier eine Zeile im Code eingefügt wird , > > > //** erhält man das korrekte Ergebnis d=0, > > > //** sonst wird trotz a==1 > > > //** der else-Zweig auch durchlaufen > > > }//** Ende der Function > > > //******************** > > > thread main > > > { > > > func_test(); > > > } | |
Antwort schreiben Antworten: Re: if-else-Bedingung - Simulator fehlerhaft! (von André H. - 10.11.2002 17:43) Re: if-else-Bedingung - Simulator fehlerhaft! (von KlaRa - 10.11.2002 19:34) Re: if-else-Bedingung - Simulator fehlerhaft! (von André H. - 10.11.2002 20:37) Re: if-else-Bedingung - Simulator fehlerhaft! (von Milf - 10.11.2002 21:19) |