Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Query in precedence (http://www.go4expert.com/forums/query-in-precedence-t18636/)

coolmesh84 20Jul2009 18:17

Query in precedence
 
Hi
I was just running a snippet from this website.

Code:

int a=10,b;
b=a++ + ++a;
printf("%d,%d,%d,%d",b,a++,a,++a);

I expected the answer to be 22, 13,13,13
But when i ran through VS 2005, I got 22,13,14,14.

Am I missing anything??

Mesh

xpi0t0s 20Jul2009 22:06

Re: Query in precedence
 
The behaviour is undefined because you use side effect operators twice on the same variable in the same statement. Twice.

This means the behaviour is dependent on what the compiler writer felt like at the time and should be avoided. Increment a only once per statement and do instead something like:
Code:

int b1=a++;
int b2=++a;
b=b1+b2;
int b3=a++;
int b4=++a;
printf("%d,%d,%d,%d",b,b3,a,b4);

for defined behaviour on all platforms and compilers.


All times are GMT +5.5. The time now is 21:49.