I am unable to understand the below issues while pre-incrementing and post-incrementing a variable inside printf:-

code used in turbocpp compiler:-

```
#include<stdio.h>
main()
{
int i=0;
clrscr();
printf("%d %d %d",i,i++,++i);
getch();
return(0);
}

```

the output in MSdos Compiler is :- 2 1 1

but for the same program in DevC++ 5.11 the output is:- 2 1 2

1) My understanding is printf prints by taking left variable first and then moves to right.(i have verified it using 3 different variables.) So, according to that shouldn't the output be 0 0 2?

2) I tried with DevC++ to check the output of the same program but it gave a different result. Now I am really confused as what should be the output.

3) Also if I vary:- printf ("%d %d %d", i,++i,i++); the output is 2 2 0.

I am not getting what is going on here. Somebody Please help me to understand better...