autoè una vecchia parola chiave C che significa "ambito locale". auto aè uguale a auto int a, e poiché l'ambito locale è il valore predefinito per una variabile dichiarata all'interno di una funzione, è anche la stessa int adi questo esempio.
Questa parola chiave è in realtà un residuo del predecessore B di C, dove non c'erano tipi di base: tutto era int, puntatore a int, matrice di int. (*) Le dichiarazioni sarebbero o autoo extrn[sic]. C ha ereditato "tutto è int" come regola predefinita, quindi è possibile dichiarare numeri interi
auto a;
extern b;
static c;
ISO C si è sbarazzato di questo, ma molti compilatori lo accettano ancora per compatibilità con le versioni precedenti. Se sembra non avere familiarità, allora dovresti capire che è in atto una regola correlata
unsigned d; // actually unsigned int
che è ancora comune nel codice moderno.
C ++ 11 ha riutilizzato la parola chiave, che pochi se qualche programmatore C ++ utilizzava con il significato originale, per la sua inferenza di tipo. Questo è per lo più sicuro perché la intregola "tutto è " di C era già stata eliminata in C ++ 98; l'unica cosa che si rompe è auto T ache nessuno usava comunque. (Da qualche parte nei suoi articoli sulla storia della lingua , Stroustrup commenta questo, ma non riesco a trovare il riferimento esatto in questo momento.)
(*) La gestione delle stringhe in B era interessante: avresti usato array di inte impacchettato più caratteri in ciascun membro. B era in realtà BCPL con sintassi diversa.
intè stato rimosso dallo standard C nel 1999.