Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


Tamaño de los tipos básicos C++

§1  Sinopsis

En lo tocante al tamaño de los tipos básicos, el Estándar C++ es bastante liberal y establece muy pocas directivas al respecto. Cosa que no ocurre en otros lenguajes. Por ejemplo, Java. Es precisamente esta falta de concreción, uno de los puntos más oscuros en cuanto a la portabilidad del lenguaje.

Una de las razones de esta "permisividad" es que en el diseño del C y C++ se primó sobre todo la velocidad de ejecución. Esta libertad para elegir dentro de ciertos límites el tamaño de los tipos, facilita que los constructores de compiladores puedan adecuar los tipos a las características de cada hardware. Por ejemplo, el tamaño de un char se supone que es el más adecuado para manipular caracteres en una máquina determinada, mientras que el de un int debería ser el más adecuado para almacenar y manipular enteros en la misma máquina.

Los tamaños se definen siempre como múltiplos del tamaño de un char, así que el tamaño de este es siempre 1, sizeof (char) == 1, y no existen tamaños del tipo 3.5 char por ejemplo.  Así pues, en lo que se refiere al tamaño de los tipos en C++, la unidad de medida es el tamaño de char.  En las expresiones que siguen 1 significa justamente esto.

Respecto al tamaño de los tipos básicos C++, en realidad, las únicas asunciones ciertas que se pueden hacer son las siguientes:

1  ==  char  <=  short  <=  int  <=  long

1  <=  bool  <=  long

char  <=  wchar_t  <=  long

float  <=  double  <=  long double

X  ==  signed X  ==  unsigned X

donde X puede ser:  char, short int, int o long int.

Ademásse garantiza que:

8 bits <= char

16 bits <= int

32 bits <= long

Los aspectos específicos de los tipos básicos en cada implementación están contenidos en la plantilla numeric_limits que puede encontrarse en el fichero <limits>.

Los ficheros de cabecera <climits> y <float.h> contienen definiciones de los rangos de valor de todos los tipos fundamentales.