Простой ответ: C и большинство языков, унаследовавших его синтаксис, являются блочными. Это означает, что если переменная определена в одном блоке, т. Е. Внутри {}, то есть в ее области.
Исключением, кстати, является JavaScript, который имеет похожий синтаксис, но является областью действия функции , В JavaScript переменная, объявленная в блоке try, находится в области видимости в блоке catch и везде в ее содержащей функции.