В языке C нет такой вещи, как «пустое выражение». Если какое-либо выражение отсутствует в операторе for
, синтаксически это означает, что все выражение опущено , не то, что оно есть, а пустое.
Цикл for
с пропущенным вторым выражением зацикливается навсегда, потому что спецификация оператора for
говорит об этом. То есть это специальная функция, относящаяся только к for
, а не что-то более общее.
Дополнительно (терминологическая задира) только второе выражение на самом деле является условием . Первое и третье не совсем "условия".