“x--” would self-add before opration "--" ?

pem pemryan@gmail.com
Mon Jun 7 07:47:00 GMT 2010


Hello list,

Yestoday I encounter this problem during a test:

1    int x = 11;
2    std::cout<< x <<  x-- << ++x;

I think it should be :
11 11 11

----
I wrote the fellowing code :

#include <iostream>

int main() {
    int x = 11;
    std::cout<< x <<  x-- << ++x << std::endl;
}

compile the code above with g++ 4.5.0, after run, it gives:
11 12 11

----
#include <stdio.h>

int main() {
   int x = 11;
   printf("%d %d %d\n", x, x--, ++x);
}

the c code compiled with gcc gives the same result.

----
But when I use clang and clang++ to compile the codes above, I get:
11 11 11. 

I am not familar with both c++ and compiler implementation, donot konw 
why the results are differnt for gcc and clang. Anyone could help and 
explain this difference for me?


Thanks,

Ryan Ren



More information about the Gcc mailing list