Forum: Compiler & IDEs If mit Increment in gcc


von Andreas B. (bitverdreher)


Lesenswert?

Hallo,
ich dachte bisher immer, daß

a) if (x-- == 0)

identisch ist mit

b) x--;
   if (x == 0)

Dem ist aber nicht so. Was macht aber genau die erste Zeile ?
Hintergrund: Ich hatte erst Version a) eingesetzt. Nachdem das nicht 
funktionierte, habe ich es durch b) ersetzt. Und siehe da: Er tut nun, 
was ich erwarte.

Gruß
Andy

von Johannes M. (johnny-m)


Lesenswert?

Es gibt pre-decrement und post-decrement.
Äquivalent zu b) ist
1
if(--x == 0)
2
{
3
    //Code
4
}
oder
1
if(! --x)
2
{
3
    //Code
4
}

In Version a) wird x erst nach dem Vergleich dekrementiert, und das 
ist offensichtlich nicht das, was Du willst...

von Andreas B. (bitverdreher)


Lesenswert?

Danke Dir, so etwas ähnliches habe ich mir gedacht.
Aber daß man da die Wahl (pre- und post-) hat, war mir neu.

Gruß
Andy

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.