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 a
di 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 auto
o 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 int
regola "tutto è " di C era già stata eliminata in C ++ 98; l'unica cosa che si rompe è auto T a
che 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 int
e impacchettato più caratteri in ciascun membro. B era in realtà BCPL con sintassi diversa.
int
è stato rimosso dallo standard C nel 1999.