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