From Wiki по внешним переменным :
Если ни ключевое слово extern, ни значение инициализации присутствует, заявление может быть либо декларацией или определение. Это зависит от компилятор для анализа модулей запрограммировать и решить.
Я не смог полностью понять значение этого утверждения относительно C. Например, означает ли это, что:
int i;
не обязательно является декларацией (как я предполагал до сих пор), но может ли это быть и определение (по определению «Определение и декларация» на той же веб-странице, без каламбуров)?
Вкратце, приведенное выше утверждение: а. просто заявление, или б. декларация + определение?
Ссылка: Объявление и определение переменной
Сводка полученных ответов:
Объявление Определение Предварительное определение Инициализировано int i; (внутри блока) Да Да Нет Нет int я = 5; (внутри блока) Да Да Нет Да (до 5) int i; (иначе) Да Нет Да Да (до 0) extern int i; Да нет нет нет Все определения являются декларациями, но не наоборот.