Я не дизайнер языков, но я бы ответил: "Почему бы и нет?" С точки зрения языкового дизайна, правила (грамматика) должны быть максимально простыми.
Не говоря уже о том, что «пустые выражения» имеют применение, т.е.
для (i = 0; i
Будет мертвое ожидание (не очень хорошее применение, но все же использование).
РЕДАКТИРОВАТЬ: Как указано в комментарии к этому ответу, любой компилятор, достойный его соли, вероятно, не будет занят в этом цикле и оптимизирует его. Однако, если бы в самом заголовке (кроме i ++) было что-то более полезное, что, как я видел, было сделано (странным образом) с обходом структуры данных, то я думаю, что вы все равно могли бы создать цикл с пустым телом (используя / злоупотребление конструкцией "for").