I just wonder if, for the following code, the compiler uses associativity/precedence alone or some other logic to evaluate.
int i = 0, k = 0;
i = k++;
If we evaluate based on associativity and precedence, postfix ++
has higher precedence than =
, so k++
(which becomes 1
) is evaluated first and then comes =
, now the value of k which is 1
is assigned to i
.
So the value of i
and k
would be 1
. However, the value of i is 0
and k is 1
.
So I think that the compiler splits this i = k++;
into two (i = k; k++;)
. So here compiler is not going for the statements associativity/precedence, it splits the line as well. Can someone explain how the compiler resolves these kinds of statements?