post & pre increment question - very confusing

tedman's Avatar, Join Date: Jan 2007
Go4Expert Member
Please help me with this, I am having a hard time!!!
Code:
    main()
    {
        int x=10, y=15;
        x = x++;
        y = ++y;
        printf(“%d, %d\n”,x,y);

    }
the result for the above is 10, 16 , if i replace x=x++ with x++ the result is 11,16
so isnt x=x++ and x++ same??

secondly
Code:
    main()
    {
        int x=20,y=35;
        x=y++ + x++;
        y= ++y + ++x;
        printf(“%d%d\n”,x,y);

    }
the answer is 57, 94 on a mingw32-gcc.exe compiler and 56, 93 on a gcc compiler!!! so do different compilers work differently??

Thanks guys

Last edited by shabbir; 29Jan2007 at 09:31.. Reason: Code formating.
0
DaWei's Avatar, Join Date: Dec 2006
Team Leader
First, read "Before you make a query". If you already have, then you're just being rude.

Secondly, the operations you're performing result in undefined operation. The compiler can do anything it likes, including melt your system into a slag heap. Read about sequence points.
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
x = x++;
You are assigning the value to the variable and then incrementing it and so it is 10
y = ++y;
You are incrementing the value and then assigning it and so its one more than the original value.
x=y++ + x++;
y= ++y + ++x;
For this try evaluating from Right to left because C is normally Right To Left evaluated and almost all the compilers follow that but as DaWei said you are at the mercy of the compiler to give you results.