On 23 April 2016 at 17:06, <chen@xxxxxxxxxxxxxxxxxxxxxxx> wrote: > The following code gives 7 when compiled with gcc. > > I think, the value of the three phase "++i" should be 1, 2, 3, although > the order may be different. So, the sum of them should be 6. > > I have confirmed that it gives 6 when compiled with clang. > > I know that a program having common sense will not write code like this, > but I still can not understand this behavior of gcc. > > /******************************************/ > #include <stdio.h> > int main() > { > int i = 0; > printf("%d\n", (++i) + (++i) + (++i)); > return 0; > } Please see: [1] https://gcc.gnu.org/bugs/#nonbugs [2] http://c-faq.com/expr/seqpoints.html Thanks, Prathamesh > >