auto
es una antigua palabra clave C que significa "ámbito local". auto a
es lo mismo que auto int a
, y dado que el ámbito local es el valor predeterminado para una variable declarada dentro de una función, también es lo mismo que int a
en este ejemplo.
Esta palabra clave es en realidad un remanente del predecesor B de C, donde no había tipos base: todo era int
, puntero a int
, matriz de int
. (*) Las declaraciones serían auto
o extrn
[sic]. C heredó el "todo es int
" como regla predeterminada, por lo que podría declarar enteros con
auto a;
extern b;
static c;
ISO C se deshizo de esto, pero muchos compiladores todavía lo aceptan por compatibilidad con versiones anteriores. Si no le resulta familiar, entonces debe darse cuenta de que una regla relacionada está funcionando en
unsigned d; // actually unsigned int
que todavía es común en el código moderno.
C ++ 11 reutilizó la palabra clave, que pocos o ningún programador de C ++ estaba usando con el significado original, para su inferencia de tipos. Esto es principalmente seguro porque la int
regla "todo es " de C ya se había eliminado en C ++ 98; lo único que se rompe es auto T a
que nadie estaba usando de todos modos. (En algún lugar de sus documentos sobre la historia del idioma , Stroustrup comenta sobre esto, pero no puedo encontrar la referencia exacta en este momento).
(*) El manejo de cadenas en B fue interesante: usaría matrices int
y empaquetaría varios caracteres en cada miembro. B era en realidad BCPL con diferente sintaxis.
int
se ha eliminado del estándar C en 1999.