Las limitaciones de números enteros en c ++

los int tipo de variable es el C ++ versión de un número entero. Como tal, int las variables sufren las mismas limitaciones que sus equivalentes enteros de conteo en matemáticas hacen.

Número entero de redondeo

No es que una expresión entera no puede resultar en un valor fraccionario. Es que una int no tiene manera de almacenar la pieza fraccional. El procesador lops fuera de la parte a la derecha del punto decimal antes de guardar el resultado. (Este cercenando de la parte fraccionaria de un número se llama truncamiento.)

Video: 17. Programación en C++ || Condicionales || Ejercicio Transformar un número entero a romanos

Considere el problema de calcular el promedio de tres números. Teniendo en cuenta tres int las variables - nValue1, nValue2, y nValue3 - su promedio está dada por la siguiente expresión:

int nAverage = (nValue1 + nValue2 + nValue3) / 3-

Suponer que nValue1 es igual a 1, nValue2 es igual a 2, y nValue3 es igual a 2 - la suma de esta expresión es 5. Esto significa que el promedio es de 5/3 o bien 1-2 / 3 o 1.666, dependiendo de sus preferencias personales. Pero eso no está usando operaciones aritméticas con enteros.

Debido a que las tres variables son números enteros, la suma se supone que es un número entero también. Y porque 3 es también un entero, lo has adivinado, la expresión completa se toma para ser un entero. Por lo tanto, dado los mismos valores de 1, 2, y 2, C ++ calculará el resultado irrazonable-pero-lógica de 1 para el valor de nAverage.

El problema es mucho peor en la siguiente formulación matemáticamente equivalente:

int nAverage = nValue1 / 3 + nValue2 / 3 + nValue3 / 3-

La conexión de los mismos valores de 1, 2, y 2, el valor resultante de nAverage ahora es 0 (hablar de lógica, pero-no razonable, no lo es). Para ver cómo esto puede ocurrir, consideran que media trunca a 0, 2/3 trunca a 0 y 2/3 trunca a 0. La suma de 0, 0, y 0 es (sorpresa!) 0.

Se puede ver que hay momentos en que el truncamiento entero es completamente inaceptable.

Rango limitado

Un segundo problema con el int tipo de variable es su gama limitada. Una normales int puede almacenar un valor máximo de 2147483647 y un valor mínimo de -2147483648 - que es más o menos de positivo a negativo 2 mil millones 2 mil millones - para un rango total de 4 mil millones.

Video: RECURSIVIDAD: NUMERO ENTERO A BINARIO EN C++

Eso es en un PC moderno, Mac, u otro procesador común. Si usted tiene una máquina mucho más antigua, la int puede no ser casi tan expansivo en su gama.

Dos mil millones es un número muy grande - lo suficientemente grande para la mayoría de aplicaciones. Es por eso que la int es útil. Pero no es lo suficientemente grande para algunas aplicaciones, incluyendo la tecnología informática. De hecho, el equipo probablemente se ejecuta más rápido que 2 GHz (gigahercios) (2 GHz es de dos mil millones de ciclos por segundo).

Video: C++ Ciclo While Parte 2 (Imprime numeros pares)

Una sola hebra de cable de fibra (el tipo que se encadenan de ida y vuelta de un lado del país al otro) puede continuar manera más de 2 mil millones de bits por segundo.

Artículos Relacionados