Both produce undefined behavior. Neither is evaluated in any meaningful way. In both cases the variable i
is used in illegal way.
And in the umpteenth time (referring to the title): Operator precedence does not dictate the order of evaluation. Operator precedence (and associativity) only defines the grouping between operators and their operands: which operand belongs to which operator. The actual temporal orderings in C (what happens first and what happens next), are defined by so called sequence points. Without sequence points, the ordering is undefined. Everything between two adjacent sequence points can be thought of as happening in any order or even simultaneously.