Tutorial do C ++ sobre como lidar com flutuadores e entradas

Um int é um número inteiro como 47 sem um ponto decimal. Você não pode ter 4,5 bebês ou repetir 32,9 vezes. Você pode receber US $ 25,76 se usar um flutuador. Portanto, ao criar seu programa, você deve decidir qual tipo usar.

É isso que algumas linguagens de script fazem? Por ser ineficiente, os carros alegóricos ocupam mais memória e geralmente são mais lentos que os ints. Além disso, você não pode comparar facilmente dois carros alegóricos para ver se são iguais, como você pode com ints.

Para manipular números, você precisa armazená-los na memória. Como o valor pode ser facilmente alterado, é chamado de variável.

o compilador que lê seu programa e o converte em código de máquina, precisa saber que tipo é, ou seja, se é um int ou um float; portanto, antes de seu programa usar uma variável, você deve declarar isto.

Você notará que a variável Counter está definida como 0. Esta é uma inicialização opcional. É uma prática muito boa inicializar variáveis. Se você não inicializar e usá-los no código sem definir um valor inicial, a variável começará com um valor aleatório que pode 'quebrar' o seu código. O valor será o que estava na memória quando o programa foi carregado.

instagram viewer

Qual é o maior número que um int pode armazenar?. Bem, isso depende do tipo de CPU mas geralmente é aceito como 32 bits. Como ele pode conter quase tantos valores negativos quanto positivos, o intervalo de valores é +/- 2-32 para 232 ou -2.147.483.648 a +2.147.483.647.

Isso é para um int assinado, mas também há um não assinado int que detém zero ou positivo. Tem um intervalo de 0 a 4.294.967.295. Apenas lembra-te - entradas não assinadas não precisam de um sinal (como + ou -1) na frente delas, porque são sempre positivas ou 0.

Há um tipo int mais curto, coincidentemente chamado short int, que usa 16 bits (2 bytes). Isso mantém os números no intervalo de -32768 a +32767. Se você usar um grande número de entradas, poderá economizar memória usando entradas curtas. Não será mais rápido, apesar de ter metade do tamanho. As CPUs de 32 bits buscam valores da memória em blocos de 4 bytes por vez. I.e. 32 bits (Daí o nome CPU de 32 bits!). Portanto, buscar 16 bits ainda requer uma busca de 32 bits.

Há um 64 bits mais longo chamado longo longo em C. Alguns compiladores C ++, embora não suportem esse tipo, usam diretamente um nome alternativo. Borland e Microsoft usam _int64. Ele tem um intervalo de -9223372036854775807 a 9223372036854775807 (assinado) e 0 a 18446744073709551615 (não assinado).

A menos que você esteja fazendo programação científica com números muito grandes ou pequenos, você usará apenas duplos para maior precisão. Os flutuadores são bons para 6 dígitos de precisão, mas os duplos oferecem 15.

Considere o número 567.8976523. É um valor flutuante válido. Mas se o imprimirmos com este código abaixo, você poderá ver a falta de precisão aparecendo. O número tem 10 dígitos, mas está sendo armazenado em uma variável flutuante com apenas seis dígitos de precisão.

Vejo Sobre entrada e saída para obter detalhes sobre como o cout funciona e como usar a precisão. Este exemplo define a precisão da saída para 8 dígitos. Infelizmente, os flutuadores podem conter apenas 6 e alguns compiladores emitem um aviso sobre a conversão de um dobro em um flutuador. Quando executado, isso imprime 567.89764

Se você alterar a precisão para 15, ela será impressa como 567.897644042969. Quanta diferença! Agora mova o ponto decimal dois para a esquerda, para que o valor seja 5.678976523 e execute o programa novamente. Desta vez, gera 5.67897653579712. Isso é mais preciso, mas ainda diferente.

Se você alterar o tipo de valor para dobrar e a precisão para 10, imprimirá o valor exatamente como definido. Como regra geral, os carros alegóricos são úteis para números pequenos e não inteiros, mas com mais de 6 dígitos, você deve usar o dobro.

Escrever software de computador não seria muito útil se você não pudesse fazer adição, subtração etc. Aqui está o exemplo 2.

Além disso, você pode fazer subtração, multiplicação e divisão. Basta usar + para adição, - para subtração, * para multiplicação e / para divisão.

Com flutuadores, você não tem controle sobre quantas casas decimais são exibidas, a menos que defina a precisão conforme mostrado anteriormente.

Agora largura, alinhamento, número de casas decimais e sinais podem ser definidos pelo cout objeto e iomanip incluir funções de arquivo.

Milhares de separadores são um pouco mais complicados. Eles são definidos a partir da localidade de um PC. Um código de idioma contém informações relevantes para o seu país, como símbolos de moeda e ponto decimal e separadores de milhares. No Reino Unido e nos EUA, o número 100,98 usa um ponto decimal. como ponto decimal, enquanto que em alguns países europeus é vírgula, portanto, € 5,70 significa um preço de 5 euros e 70 centavos.

cria um objeto mpunct que é uma referência a um moneypunct classe de modelo. Isso contém informações sobre o código do idioma especificado - no nosso caso, o milhares_sep () O método retorna o caractere usado para separador de milhares.

Nota Parece haver discrepâncias entre diferentes compiladores sobre como cout.imbue se comporta. No Visual C ++ 2005 Express Edition, isso incluía separadores. Mas o mesmo código com o Microsoft Visual C ++ 6.0 não!

Se você usar um desses dois modos de formatação através do cout.setf então precisão() define o número de casas decimais após o ponto decimal (não o número geral de dígitos), mas você perde a formatação de milhares. Também zeros à direita (como foram ativados por ios_base:: showpoint ) tornam-se ativados automaticamente sem a necessidade de showpoint.

Você esperaria algo como um valor de 11.0909090909. De fato, o valor é 11. Por que é isso? porque o expressão no lado direito (conhecido como rvalue) é inteiro / inteiro. Por isso, usa aritmética inteira que joga fora a parte fracionária e atribui 11 a f. Alterando para

Em C, não existe um tipo como bool. As expressões em C foram baseadas em um zero sendo falso ou um diferente de zero sendo verdadeiro. Em C ++, o tipo bool pode levar os valores verdade ou falso. Esses valores ainda são equivalentes a 0 e 1. Em algum lugar do compilador, ele terá um

Ou pelo menos age dessa maneira! As duas linhas abaixo são válidas sem transmissão, portanto, nos bastidores, os bools são implicitamente convertidos em ints e podem até ser incrementados ou diminuídos, embora essa seja uma prática muito ruim.

O if ainda fará o if como a variável inválida é diferente de zero, mas é um código inválido e deve ser evitada. A boa prática é usá-los como pretendidos. se (! v) é C ++ válido, mas eu prefiro o mais explícito se (v! = 0). Isso, no entanto, é uma questão de gosto, não um deve fazer directiva.

é melhor para o compilador detectar erros em tempo de compilação do que o usuário em tempo de execução

instagram story viewer