Недавно я стал ассистентом преподавателя для университетского курса, который в основном учит C. Курс стандартизован на C90, в основном из-за широко распространенной поддержки компилятора. Одной из очень запутывающих концепций для новичков C с предыдущим опытом Java является правило, что объявления переменных и код не могут быть перемешаны внутри блока (составной оператор).
Это ограничение было наконец снято с C99, но мне интересно: кто-нибудь знает, почему он был там в первую очередь? Упрощает ли процесс анализа переменных? Позволяет ли программисту указать, в каких точках выполнения программы стек должен расти для новых переменных?
Я предполагаю, что разработчики языка не добавили бы такого ограничения, если бы не имели абсолютно никакой цели.