Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   post & pre increment question - very confusing (http://www.go4expert.com/forums/post-pre-increment-question-confusing-t2729/)

tedman 29Jan2007 04:11

post & pre increment question - very confusing
 
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

DaWei 29Jan2007 06:09

Re: post & pre increment question - very confusing
 
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.

shabbir 29Jan2007 09:34

Re: post & pre increment question - very confusing
 
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.


All times are GMT +5.5. The time now is 23:07.