Hi, On Thu, 2 Oct 2003, Albert Scholl wrote:
Ja, aber das sollte doch gar nicht mehr ausgewertet werden, da ich vorher auf a>0 abfrage...
Das ist exakt der Punkt, den ich nicht verstehe!
Wieso sollte der Ausdruck unbedingt von links nach rechts abgearbeitet werden?
Weil && einen Sequenzpunkt erzeugt. Damit ist if (cond1 && cond2) { ... } aequivalent zu if (cond1) { if (cond2) { ... } } Ohne ein kongretes Beispiel kann man jetzt leider nicht sagen, ob das nun ein Compilerproblem war, oder nicht. Zur Vermeidung von Division durch 0 reicht eigentlich "if (a > 0 && b/a < 2)" voellig aus.
Es gab in einer Newsgroup in der ich mitlese vor ein paar Monaten mal eine Diskussion zu dem Thema - die Reihenfolge kann völlig verschieden sein und ist glaube ich vom Compiler abhängig.
Nein, nicht bei &&, || oder , Ciao, Micha.