С точкой с запятой ваш код фактически совпадает с
int x = 0;
int i;
i = 4;
x = x + i; // x = 0 + 4;
, поскольку цикл for
эквивалентен
for (i = 0; i <= 3; i++) { } // sets i to 4
Без точки с запятой:
int x = 0;
int i;
i = 0; x = x + i; // x = 0 + 0;
i = 1; x = x + i; // x = 0 + 1;
i = 2; x = x + i; // x = 1 + 2;
i = 3; x = x + i; // x = 3 + 3;
цикл for
эквивалентен:
for (i = 0; i <= 3; i++) { x = x + i; }
Прочитайте хорошую книгу C ++ для начинающих, чтобы узнать больше о синтаксисе языка.