В чем разница между локальными переменными auto int a и int a?

Использовать регистр идентификатора класса хранения автоматически? Я понимаю, что все локальные переменные автоматически по умолчанию. Но что делает разница, написав явно auto int a?

Ответ 1

Нет никакой разницы.

{
   auto int a;
   /* ... */
}

и

{
   int a;
   /* ... */   
}

эквивалентны.

Общей практикой является не размещение спецификатора auto.

Ответ 2

Возможны два случая:

  • auto по умолчанию, и явное добавление ключевого слова ничего не выполняет
  • auto не разрешено (например, для глобальной переменной), и в этом случае добавление auto предотвращает компиляцию кода

Ответ 3

В современный день C (C89, C99, C11) ключевое слово auto является избыточным. За исключением явного намерения ( "Это нестатическая переменная, и я имею в виду это!" ), Она больше не имеет никакой цели. Это остаток истории C, перенесенный с B, но, как и ключевое слово entry, стало практически устаревшим.

Я использовал его один раз в жизни. Это было в записи IOCCC в сочетании с неявным int:

 drive () { auto motive; ... }