Mailinglist Archive: opensuse-programming-de (184 mails)
| < Previous | Next > |
Re: Gleitkomma-Ausnahme
- From: Michael Matz <matz@xxxxxxx>
- Date: Thu, 2 Oct 2003 15:14:13 +0200 (CEST)
- Message-id: <Pine.LNX.4.44.0310021509440.20328-100000@xxxxxxxxxxxxx>
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.
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.
| < Previous | Next > |