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