Мне нечего на это сказать. Разве что могу задать уточняющий вопрос: о какой из проблем ты не знал? О проблемах с ";" или о невероятных приоритетах?
Кстати эта ; перед else -- это не единственный такого рода момент. Скажем перечисляя элементы типа enum {one, two, three, four, }, я могу оставить запятую после four -- это сделано с той же целью: чтобы копирование кода из конца перечисления в середину оставляло бы код правильным. То же при перечислении элементов инициализатора массива или структуры.
Но, кстати, то, что паскалист не замечал этих проблем -- это очень предсказуемо. Каждый оценивает программирование с вышки "своего" языка. И чем меньше возможностей в языке, тем большее число возможностей такой программист считает опциональными, ненужными, а может даже и вредными.
Есть такая парадигма программирования, называется она: структурное программирование. Так вот именно ради этого был изобретён C'шный for. Организация цикла -- сама по себе, код относящийся к выполнению действий на каждой итерации -- сам по себе.
Подход "макси" к этой проблеме -- это lisp'овский макрос loop, используя который я пишу что-то типа:
Там ещё есть возможность условного выполнения кода на итерации, возможности итерации по массивам, по хеш-таблицам, естественно возможности досрочного завершения цикла... Но это в стиле Common Lisp'а -- настолько универсально, что выглядит не иначе как монструозно.
C'шный подход не столь универсален, но зато не лишён изящности:
Мне не надо выполнение полезных вещей перетасовывать с кодом организации цикла. То есть надо иногда, но гораздо реже чем в паскале.
И мало того, что такие for'ы читать понятнее, чем уродские while'ы, в которых сам чёрт ногу сломит в попытке выяснить, что этот while делает. Так ведь такие for'ы гораздо удачнее для макрописательства. Я, скажем, с трудом могу представить себе, как в паскале можно было бы написать макрос list_for_each, даже если бы в паскале был бы макроязык. (list_for_each -- достаточно активно используемый макрос в ядре linux, и без этого макроса код ядра стал бы существенно менее читаемым.)