autoé uma palavra-chave C antiga que significa "escopo local". auto aé o mesmo que auto int a, e como o escopo local é o padrão para uma variável declarada dentro de uma função, também é o mesmo que int aneste exemplo.
Essa palavra-chave é, na verdade, uma sobra do predecessor de C, B, onde não havia tipos de base: tudo era int, ponteiro para int, matriz de int. (*) As declarações seriam autoou extrn[sic]. C herdou o "tudo é int" como regra padrão, então você pode declarar números inteiros com
auto a;
extern b;
static c;
O ISO C se livrou disso, mas muitos compiladores ainda o aceitam como compatibilidade com versões anteriores. Se não lhe parecer familiar, você deve perceber que uma regra relacionada está em funcionamento em
unsigned d; // actually unsigned int
o que ainda é comum no código moderno.
O C ++ 11 reutilizou a palavra-chave, que poucos ou nenhum programador C ++ estava usando com o significado original, para sua inferência de tipo. Isso é mais seguro porque a intregra "tudo é " de C já havia sido descartada no C ++ 98; a única coisa que quebra é auto T aque ninguém estava usando de qualquer maneira. (Em algum lugar em seus trabalhos sobre a história da linguagem , Stroustrup comenta isso, mas não consigo encontrar a referência exata no momento.)
(*) O tratamento de strings em B foi interessante: você usaria matrizes inte empacotaria vários caracteres em cada membro. B era na verdade BCPL com sintaxe diferente.
intfoi removido do padrão C em 1999.