[Bug c++/15012] New: Unexpected behaviour on i--

mdeluigi at student dot ethz dot ch gcc-bugzilla@gcc.gnu.org
Mon Apr 19 15:08:00 GMT 2004


Try that code:
---8<---
int j = 2;
int i = 2;
i = i-- + ++j;
cout << i;
--->8---
The suprising result is that i == 1.
I tried this on pc (intel), powerpc and sparc.

The result is because the compiler does something like:
---8<---
tmp1 = i--;
tmp2 = ++j;
i = i + tmp2;
i = tmp1;
--->8---
(check the asm-code for more details).

That's not what the programer expects.

-- 
           Summary: Unexpected behaviour on i--
           Product: gcc
           Version: 3.3
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mdeluigi at student dot ethz dot ch
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15012



More information about the Gcc-bugs mailing list