Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)