problem - operatory

0

Wie ktos moze, dlaczego kompilator C++ tego nie przepuszcza:

int a=9;

cout<< ++(a--) ;

3

Bo a-- zwraca r-value czyli wartość tylko do odczytu (bo to jest wartość tymczasowa istniejąca teoretycznie tylko w chwili wywołania funkcji --) a operator pre-inkrementacji wymaga od nas l-wartości bo ten operator zmienia obiekt który do niego przesyłasz.

0

czyli to jest ok?

(++a)--

2

Użycie dwa razy ++/-- na jednej zmiennej w jednym wyrażeniu (ściśle, bez sequence pointa) to tak czy inaczej undefined behaviour (UB).
Czyli nie, to nie jest ok.

0

hmm, ten przypadek (++a)-- , przechodzi bezbłędnie.

0

Być może kompiluje się bezbłędnie, lecz jest to UB.
Coś jak:

int a = 1;
a = a++ + ++a;

1 użytkowników online, w tym zalogowanych: 0, gości: 1