La scelta del C di dover dichiarare prima tutte le variabili risale agli albori del linguaggio: in altre parole è così e basta. Poi è arrivato qualcuno che la pensava come te e ha pensato di superare questo limite. Compilatori C puri ce ne sono ancora in giro, anche se nel mercato mainstream circolano più i compilatori C++. Per questo non hai mai avuto problemi.
Se però dovessi compilare quel codice con un compilatore C puro avresti degli errori.