El tamaño de las variables de c ++

C ++ permite ampliar en los tipos de variables enteros mediante la adición de los siguientes descriptores en la parte frontal: const, no firmado, corto, o otra larga. De este modo se podría declarar algo como lo siguiente:

unsigned long int ulnVariable-

UN const variable no puede ser modificado. Todos los números son implícitamente const. Por lo tanto, 3 es de tipo const int, mientras que 3.0 es una const doble, y ‘3’ es una const char.

Video: 8. Arreglos unidimensionales (Arrays) / C++

Un no firmado la variable puede tomar valores no negativos ONLY- sin embargo, puede manejar un número más o menos el doble de grande que su hermano firmado. Así, una unsigned int tiene un rango de entre 0 y 4 mil millones (en contraposición a la habitual signedint‘S gama de -2000 millones a 2000 millones).

C ++ permite declarar una short int y una long int. Por ejemplo, una short int ocupa menos espacio, pero tiene un alcance más limitado que un habitual int, mientras que una long int toma más espacio de almacenamiento y tiene una gama significativamente más grande.

los int se supone. Por lo tanto las siguientes dos declaraciones Se aceptan y completamente equivalente:

long int lnVar1- // declarar un largo intlong lnVar2- // También se supone un largo int INT

El C ++ 2011 Standard siquiera define una long int largo y una doble largo. Estos son igual long int y doble, respectivamente, sólo que más - más precisión y mayor rango.

No se permiten todas las combinaciones. Por ejemplo, no firmado sólo puede aplicarse a los tipos de conteo int y carbonizarse. La siguiente tabla muestra las combinaciones legales y su significado, junto con la forma de declarar una constante de ese tipo.

Tipos de variables La Common C ++
TipoLa declaración de una constanteLo que es
int1Un número de conteo simple, ya sea positiva o negativa.
unsigned int1UUn número de recuento no negativo.
short int-Una versión más pequeña de la potencialmente int. Se utiliza menos memoria pero tiene un más limitado
distancia.
long int1LUna versión potencialmente mayor de la int. Se puede utilizar más memoria, pero tiene una mayor
distancia.
long int largo1LLUna versión de la int es decir
potencialmente aún mayor.
flotador1.0fUn número real de precisión simple.
doble1.0Un número real de doble precisión.
doble largo-Un número de coma flotante potencialmente mayor. En el PC, doble largo es el tamaño nativo para los números
interna al procesador numérico.
carbonizarse`do`Un único carbonizarse variable almacena una
carácter individual. No es adecuado para la aritmética.
wchar_tL`c’Un personaje de ancho. Se utiliza para almacenar los juegos de caracteres más grandes, como
ideogramas chinos y símbolos kanji japonés. También conocido como UTF o
Unicode.

¿Qué tan lejos rango de números?

Puede parecer extraño, pero estándar de C ++ en realidad no decir exactamente lo grande que un número cada tipo de datos puede acomodar. Las direcciones estándar sólo el tamaño relativo de cada tipo de variable. Por ejemplo, se dice que el máximo long int es al menos tan grande como el máximo int.

Video: Vector tamaño variable en C++

La norma de 2011 dice un poco más que eso - por ejemplo, una long int debe ser de al menos 32 bits - pero todavía no especificar el tamaño de cada tipo de variable.

Los autores de C ++ no estaban tratando de ser misterioso. Ellos querían permitir que el compilador para implementar el código absoluta más rápida posible para la máquina base. El estándar fue diseñado para trabajar para todos los diferentes tipos de procesadores, ejecutar diferentes sistemas operativos.

De hecho, el tamaño estándar de una int ha cambiado en las últimas décadas. Antes de 2000, la norma int en la mayoría de los PC fue de 2 bytes y tenía un rango de más o menos 64.000. En algún momento alrededor de 2000, el tamaño de texto básico en los procesadores Intel cambió a 32 bits. La mayoría de los compiladores cambian a los valores predeterminados int de hoy - es de 4 bytes y tiene un alcance de más o menos 2 mil millones.

La siguiente tabla proporciona el tamaño y el rango de cada tipo de variable en la mayoría de otros compiladores significado para un procesador Intel ejecuta en un sistema operativo de 32 bits.

Gama de tipos numéricos
TipoTamaño [bytes]ExactitudDistancia
short int2exacto&minus-32,768 a 32,767
int4exacto&menos-2147483648 a 2147483647
long int4exacto&menos-2147483648 a 2147483647
long int largo8exacto&menos-9,223,372,036,854,775,808 a
9.223.372.036.854.775.807
flotador47 dígitos+/&Minus- 3,4028 * 10+/ -38
doble816 dígitos+/&Minus- 1,7977 * 10+/ -308
doble largo1219 dígitos+/&menos-1.1897 * 10+/ -4932

El intento de calcular un número que está más allá de la gama de tipo de una variable que se conoce como una rebosar. El estándar de C ++ generalmente sale de los resultados de un desbordamiento indefinido. Esa es otra forma en que los inventores de C ++ querían abandonar el lenguaje flexible, de modo que el código de máquina generada sería tan rápido como sea posible.

En el PC, un desbordamiento de punto flotante genera una excepción que, si no se manejan, hará que el programa se bloquee. Tan malo como suena, un desbordamiento de enteros es aún peor - C ++ genera un resultado incorrecto sin queja.

Artículos Relacionados