[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 92

 

Beides ist richtig, aber das zweite ist schneller. Bei der ersten werden immer alle Bedingungen geprüft, bei der zweiten werden nicht alle Bedingungen geprüft. Und es ist besser, es so zu schreiben, um Verwechslungen mit anderen Zugehörigkeiten zu vermeiden:

//--- 2.
if (cond_0)
{  if (cond_1)           a=result_1;
   else if (cond_2)      a=result_2;
        else if (cond_3)  a=result_3;
}

Oder setzen Sie gleich geschweifte Klammern um die Blöcke.

 
Mathemat:

Beides ist richtig, aber das zweite ist schneller. Bei der ersten werden immer alle Bedingungen geprüft, bei der zweiten werden nicht alle Bedingungen geprüft. Und es ist besser, es so zu schreiben, um Verwechslungen mit anderen Zugehörigkeiten zu vermeiden:

Oder setzen Sie geschweifte Klammern um die Blöcke auf einmal.

Danke für den Rat. Während ich mich früher darum bemühte, meinen EA im Allgemeinen korrekt zu schreiben, konzentriere ich mich jetzt auf seine Geschwindigkeit. :)
 
Mathemat:

Beide sind korrekt

Nein, die Codes sind keineswegs gleich.
 
Es könnte einfacher sein, es durch swith() laufen zu lassen, wenn die Bedingungen nicht berechnet werden müssen...
 
TheXpert: Nein, die Codes schließen sich keineswegs gegenseitig aus.

Richtig, lassen Sie uns nun darüber spekulieren, was passiert, wenn cond_1, cond_2, cond_3 sich nicht gegenseitig ausschließen...

Ich behaupte nicht, dass die Codes im Allgemeinen unterschiedliche Ergebnisse liefern. Aber wenn sich die Bedingungen nicht überschneiden, scheinen die Ergebnisse die gleichen zu sein.

 
FAQ:
Es kann einfacher sein, swith() zu überspringen, wenn Sie die Bedingungen nicht berechnen müssen...
In switch sollte der Wert in case int sein, nicht immer ist cond_ int. Ehrlich gesagt war ich an der Logik selbst interessiert, welcher Eintrag besser/schneller ist.
 
paladin80:
In switch sollte der Wert bei case int sein, nicht immer ist cond_ int. Ich war ehrlich gesagt an der Logik selbst interessiert, welcher Eintrag besser/schneller ist.
Getrennte Bedingungen, wobei die am häufigsten verwendeten an erster Stelle stehen
 
paladin80:
In switch muss der Wert bei case int sein, nicht immer ist cond_ int. Ich war ehrlich gesagt an der Logik selbst interessiert, welcher Eintrag besser/schneller ist.

Die zweite, aber es gibt eine Einschränkung bei der Verschachtelung.

Es ist besser, Case zu verwenden, wenn es eine solche Möglichkeit gibt.

 
Ja, ich benutze den Schalter. Was die sich gegenseitig ausschließenden Bedingungen angeht, so verstehe ich das Phänomen folgendermaßen:
//--- 1.
int x=1, y=1;
if (x==1)
{  if (y>0)  a=result_1;
   if (y<2)  a=result_2;
   if (y==1) a=result_3;
}
// a=result_3

//--- 2.
int x=1, y=1;
if (x==1)
{  if (y>0)            a=result_1;
   else if (y<2)       a=result_2;
        else if (y==1) a=result_3;
}
// a=result_1
 

Wenn y = 1 ist, sind genau alle Bedingungen erfüllt. Sie schließen sich nicht gegenseitig aus.

Sich gegenseitig ausschließend sind zum Beispiel: y<0, y==0, y>0.

Grund der Beschwerde: