Использовать регистр идентификатора класса хранения автоматически? Я понимаю, что все локальные переменные автоматически по умолчанию. Но что делает разница, написав явно auto int a?
В чем разница между локальными переменными auto int a и 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; ... }