Где автоматическое ключевое слово C используется?

В мои дни колледжа я читал о auto ключевое слово и со временем я на самом деле забыл, каково это. Это определяется как:

определяет локальную переменную как наличие локального времени жизни

Я никогда не находил, что это используется где-нибудь, это действительно используется и раз так тогда, где это используется и в который случаи?

92
задан rjzii 3 February 2010 в 15:54
поделиться

3 ответа

auto - модификатор наподобие static . Он определяет класс хранения переменной. Однако, поскольку по умолчанию для локальных переменных установлено значение auto , обычно вам не нужно указывать его вручную.

На этой странице перечислены различные классы хранения в C.

81
ответ дан 24 November 2019 в 06:23
поделиться

Если бы вы прочитали список IAQ (Редко задаваемые вопросы), вы бы знали, что автомобиль полезен, прежде всего, для определения или объявления транспортного средства:

auto my_car;

Транспортное средство, которое постоянно припарковано на открытом воздухе:

extern auto my_car;

Для тех, кто не имеет никакого чувства юмора и хочет "только факты Мэм": короткий ответ заключается в том, что никогда нет никаких причин использовать auto вообще. Единственный раз, когда вам разрешено использовать auto - это переменная, которая уже имеет auto класс хранения, так что вы просто указываете что-то, что может случиться в любом случае. Попытка использовать auto для любой переменной, которая уже не имеет класса хранения auto, приведет к тому, что компилятор отвергнет ваш код. Полагаю, если вы хотите получить технический, то ваша реализация не обязательно должна быть компилятором (но она есть) и теоретически может продолжить компиляцию кода после выдачи диагностики (но она не будет).

Небольшое дополнение к kaz:

Есть еще:

static auto my_car;

которое требует диагностики по ISO C. Это корректно, так как объявляет, что машина сломана. Диагностика проводится бесплатно, но выключение индикатора приборной панели обойдется вам в восемьдесят долларов. (Двадцать или меньше, если вы покупаете собственный USB ключ для бортовой диагностики на eBay).

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

Если вы видите много статического auto extern ... в любой кодовой базе, вы находитесь в плохом районе; ищите работу получше сразу, пока все не превратилось в Ржавчину.

120
ответ дан 24 November 2019 в 06:23
поделиться

В C auto - это ключевое слово, которое указывает, что переменная является локальной для блока. Поскольку это значение по умолчанию для переменных с блочной областью видимости, оно не нужно и используется очень редко (не думаю, что когда-либо видел его использование вне примеров в текстах, в которых обсуждается ключевое слово). Мне было бы интересно, если бы кто-нибудь мог указать на случай, когда использование auto требовалось для получения правильного синтаксического анализа или поведения.

Однако в стандарте C ++ 11 ключевое слово auto было «взломано» для поддержки вывода типа, где тип переменной может быть взят из типа ее инициализатора:

auto someVariable = 1.5;   // someVariable will have type double

Вывод типа добавляется в основном для поддержки объявления переменных в шаблонах или возвращаемых из функций шаблона, где типы, основанные на параметре шаблона (или выведенные компилятором при создании экземпляра шаблона), часто может быть довольно болезненным для объявления вручную.

22
ответ дан 24 November 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: