В языке Си есть масса случаев неопределённого поведения программы - когда результат выполнения может различаться на разных архитектурах процессора, на разных компиляторх, на разных уровнях оптимизации.
Одно из правил, позволяющих избежать этой проблемы: "
никогда не используйте переменную с пред/пост-инкрементацией/декрементацией два или более раз в одном выражении".
Сергей Яковлев правильно сказал: достаточно
i++ (или
++i, что в данном случае то же самое).