A-l oop семантически эквивалентно (см. cppreference ):
{
init_statement
while ( condition ) {
statement
iteration_expression ;
}
}
В вашем случае это будет
for (j = 0; j < n; j++){
//...
}
эквивалентно
{
j = 0;
while (j < n) {
// ...
j++;
}
}
Для остановки l oop условие (j<n
) должно стать false
. Следовательно, если вы проверяете счетчик после l oop, вы видите не счетчик последнего итерата, а значение не выполненной итерации. Обратите внимание, что j++
увеличивается во время последней итерации.
Я бы посоветовал вам объявить счетчик l oop только в области действия l oop, чтобы избежать путаницы, подобной текущей:
for (int j = 0; j < n; j++){
//...
}