Компилятор будет очень громко жаловаться, если вы напишите недопустимый цикл for:
for (int i)
получит большую громкую ошибку на каждом компиляторе на рынке.
Однако многие «ошибки» цикла вполне законны.
Я предполагаю, что вы пытаетесь пометить допустимые циклы, которые не означают того, что вы хотите, чтобы они имели в виду. Проблема, конечно, в том, что компилятор не может понять, что вы имеете в виду . Вы можете на законных основаниях пропустить любую из трех частей цикла, и обычно все три части пропустить. Кроме того, вы можете сделать более чем одну вещь в каждой части:
for (int i = 0, MAX_ITERS = 20; ; ++i, --MAX_ITERS) {
if (MAX_ITERS == 0 || i > MAX_ITERS)
break;
if (i % 2 == 0)
continue;
std::cout << i << ',' << MAX_ITERS << '\n';
}
И, конечно, большинство ошибок цикла совершенно невозможно найти компилятору, например, написать i < 10
, когда вы имеете в виду i <= 10
.