stevie is right. the ans should be 15, not 20.
"now my question is when the next i=i*5 is executed the value of i should have been 4" .. the operator is excuted the "+" and at the same time excuted "*" or "/".. its like the simple math.
i=(T)(i*(2+ i++))=> excuted the same time, so i=(T)(3*(2+3++))
i didn't increase at all at that time, not separate either.
at the first one: i=i++ + i++ => i=10++ + 11++=> i=21
first i++ ==> 10++, but the next i increase 1 to 11, so i is increase by 1 at next i.
if say, i=i+ i++ => i=10+ 10++ =>i=20, right?!
( i didn't increase at all, you can run the simple one and see)
also, i remember earlier there were someone discussed this before.. i forgot where it was.. probably a week ago.. you can check it back few days ago. the dicussion was pretty clear
hope this help. good day.