As limitações de inteiros em c ++

o int

tipo variável é a versão C ++ de um número inteiro. Assim sendo, int variáveis ​​sofrem das mesmas limitações que os seus equivalentes inteiros de contagem em fazer matemática.

Video: Como somar dois números inteiros em C

Integer round-off

Não é que uma expressão inteira não pode resultar em um valor fracionário. É que um int não tem nenhuma forma de armazenar a peça fracionada. O processador lops fora a parte à direita do ponto decimal antes de armazenar o resultado. (Este lopping fora da parte fracionária de um número é chamado truncamento.)

Video: Programação em C - Cálculo da média aritmética

Considere o problema de calcular a média de três números. dada três int variáveis ​​- nValue1, nValue2, e nValue3 - sua média é dado pela seguinte expressão:

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

Suponha que nValue1 é igual a 1, nValue2 é igual a 2, e nValue3 é igual a 2 - a soma desta expressão é 5. Isto significa que a média é de 03/05 ou seja 1-2 / 3 ou 1.666, dependendo da sua preferência pessoal. Mas isso não está usando matemática inteiro.

Uma vez que todas as três variáveis ​​são inteiros, a soma é assumido como sendo um número inteiro bem. E porque 3 é também um inteiro, você adivinhou, a expressão inteira é levado para ser um inteiro. Assim, tendo em conta os mesmos valores de 1, 2, e 2, C ++ irá calcular o resultado razoável-but-lógico de um para o valor de nAverage.

O problema é muito pior na formulação matematicamente equivalente seguinte:



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

Ligar os mesmos valores de 1, 2, e 2, o valor resultante de nAverage é agora a 0 (falar sobre lógico-mas-não razoável, não é). Para ver como isso pode ocorrer, considere que 1/2 trunca a 0, 2/3 trunca a 0, e 2/3 trunca a 0. A soma de 0, 0 e 0 é (surpresa!) 0.

Video: Programação I - C++ (Vetores - ordenado em ordem crescente) 02

Você pode ver que há momentos em que integer truncamento é completamente inaceitável.

Faixa limitada

Um segundo problema com a int tipo variável é o seu alcance limitado. A normalidade int pode armazenar um valor máximo de 2147483647 e um valor mínimo de 2,147,483,648 - que é aproximadamente de positivo 2 bilhões para negativa 2 bilhões - para uma gama total de 4 bilhões.

Isso é em um PC moderno, Mac ou outro processador comum. Se você tem uma máquina muito mais velho, o int não pode ser quase tão amplo no seu intervalo.

Dois bilhões é um número muito grande - muito grande o suficiente para a maioria das aplicações. É por isso que o int é útil. Mas não é grande o suficiente para algumas aplicações, incluindo a tecnologia de computador. Na verdade, o computador provavelmente executa mais rápido do que 2 GHz (gigahertz) (2 GHz é de dois bilhões de ciclos por segundo).

Video: Programar em C - Exercício | Como Inverter um número | Operador Resto % - Aula 18

Um único fio de cabo de fibra (do tipo que está amarrado e para trás a partir de um lado do país para o outro) pode transportar maneira mais de 2 milhões de bits por segundo.


Publicações relacionadas