Зауважте, це питання було спочатку опубліковано у 2009 році, до того, як було затверджено C ++ 11 і до того, як значення
autoключового слова було кардинально змінено. Надані відповіді стосуються лише значення C ++ 03auto- що є вказаним класом зберігання - а не значення C ++ 11auto- що є автоматичним вирахуванням типу. Якщо ви шукаєте пораду щодо того, коли використовувати C ++ 11auto, це питання не стосується цього питання.
Найдовше я думав, що немає жодної причини використовувати staticключове слово в C, оскільки змінні, оголошені поза сферою блоку, були неявно глобальними. Потім я виявив, що оголошення змінної як staticусередині блоку-сфери дасть їй постійну тривалість, а оголошення за межами області блоку (у програмі-області) дасть їй область області (доступ до неї можна отримати лише в цьому модулі компіляції).
Отже, у мене залишається лише одне ключове слово, яке я (можливо) ще не повністю розумію: autoКлючове слово. Чи є в цьому якесь інше значення, крім "локальна змінна?" Що-небудь, що він робить, не виконується неявно для вас, де б ви не хотіли це використовувати? Як поводиться autoзмінна в обсязі програми? Що з static autoзмінною у діапазоні файлів? Чи має це ключове слово якісь цілі, крім лише існуючих, для повноти ?