Объявление или определение в C

From Wiki по внешним переменным :

Если ни ключевое слово extern, ни значение инициализации присутствует, заявление может быть либо декларацией или определение. Это зависит от компилятор для анализа модулей запрограммировать и решить.

Я не смог полностью понять значение этого утверждения относительно C. Например, означает ли это, что:

int i;

не обязательно является декларацией (как я предполагал до сих пор), но может ли это быть и определение (по определению «Определение и декларация» на той же веб-странице, без каламбуров)?

Вкратце, приведенное выше утверждение: а. просто заявление, или б. декларация + определение?

Ссылка: Объявление и определение переменной

Сводка полученных ответов:

  Объявление Определение Предварительное определение Инициализировано
int i; (внутри блока) Да Да Нет Нет
int я = 5; (внутри блока) Да Да Нет Да (до 5)
int i; (иначе) Да Нет Да Да (до 0)
extern int i; Да нет нет нет


Все определения являются декларациями, но не наоборот.

23
задан Community 23 May 2017 в 12:25
поделиться