int i = i + 1;
を
int i;
i = i + 1;
と昔風に書けばおかしいことはすぐわかると思うんですけれどもね。
規格ではどうなっているのでしょうかね。