Os tipos numéricos embutidos do C++ podem ser divididos em inteiros e números de ponto flutuante.
Os inteiros são números sem parte decimal, como 0, 691 ou -2.
Os números de ponto flutuante são números com ponto decimal, como 6.02214076, 0.1 ou -1.616.
O exemplo a seguir mostra a declaração e a inicialização de quatro variáveis diferentes.
int m_morales{9241}; // base 10: 0-9
int a_apaec{0x24CD}; // base 16: 0-9 and A-F
int m_gargan{0b10010000011001}; // base 2: 0-1
int b_reilly{022031}; // base 8: 0-7
// Leading with a 0 not the letter o.
Quando você atribui um valor a uma variável int, pode fazer isso diretamente com um literal.
Um literal é um número escrito diretamente no código, como 9241.
Existem literais inteiros diferentes para várias bases de representação.
Os literais inteiros decimais são os mais comuns e usam os dígitos 0 a 9.
Ao adicionar um prefixo especial, como 0x, é possível usar outras bases.
O exemplo acima mostra o número 9241 em suas quatro representações e prefixos.
Todas as variáveis são inicializadas com o mesmo valor.
Para mais detalhes sobre os diferentes sistemas de representação, dê uma olhada em um pequeno tutorial.
Você pode usar um apóstrofo para separar dígitos e facilitar a leitura.
9'241 é o mesmo que 0b0100'100'0001'1001 ou 92'4'1.
Os literais de ponto flutuante vêm em dois formatos.
Além do intuitivo 0.0024, é possível usar sua notação científica 2.4e-3.
O tipo de ponto flutuante mais comum é double.
O C++ dá suporte a +, -, *, /, ( e ) e % para formar expressões.
O resultado da operação entre dois inteiros também é um inteiro.
5 / 2 retorna 2.
Quando um dos tipos envolvidos é um tipo de ponto flutuante, o resultado também será de ponto flutuante.
5.0 / 2 e 5 / 2.0 retornarão 2.5.
% é o operador de resto e retorna o resto de uma divisão inteira: 5%3 é 2.
O operador de atribuição atribui um literal a uma variável. A atribuição sempre acontece da direita para a esquerda, nunca o contrário.
int length = 5;
int width = 2;
length = width;
Aqui, o valor inteiro 5 é atribuído à variável length.
Em seguida, o valor inteiro 2 é atribuído à variável width.
Por fim, o valor de width é copiado para a variável length e o valor anterior, 5, é perdido.
Considere também que estamos apenas atribuindo o valor de width a length no momento da operação de atribuição.
Portanto, se o valor de width mudar depois, isso não afetará o valor que length recebeu.
O operador de atribuição pode ser combinado com os outros operadores (aritméticos e bit a bit), conhecidos como operadores de compound assignment: +=, -=, *=, /=, %=.
Esses operadores modificam o valor atual de uma variável realizando uma operação sobre ele.
// we start with 0 people
int people{};
// we need 0 eggs
int eggs{};
// two people joined:
people += 2;
// people is now 2
// let's add 3 eggs per person
eggs += 3 * people;
// eggs is now 6
As variáveis people e eggs são inicializadas com 0.
Depois, somamos o valor inteiro 2 ao valor existente 0 da variável people e atribuímos o resultado de volta a people.
people passa a valer 2.
Mais adiante, adicionamos 3 ovos para cada pessoa, o que dá 6 ovos no total.
Agora, somamos esse 6 ao valor existente 0 da variável eggs e atribuímos o resultado de volta a eggs.
eggs passa a valer 6.
A expressão equivalente seria people = people + 2 e eggs = eggs + (3 * people).
Neste exercício, você vai escrever código para ajudar um freelancer a se comunicar com um gerente de projeto. Sua tarefa é fornecer alguns utilitários para calcular rapidamente as taxas diária e mensal, opcionalmente com um desconto.
Primeiro, estabelecemos algumas regras entre o freelancer e o gerente de projeto:
Às vezes, o freelancer oferece aplicar um desconto sobre sua taxa diária (por exemplo, para seus clientes mais fiéis ou clientes sem fins lucrativos).
Os descontos são modelados como números fracionários que representam porcentagens, por exemplo, 25.0 (25%).
Implemente uma função chamada daily_rate para calcular a taxa diária a partir de uma taxa horária como parâmetro.
O contrato define que um dia tem 8 horas faturáveis.
daily_rate(60)
// => 480.0
A taxa diária retornada deve ser do tipo double.
Implemente uma função apply_discount para calcular o preço após um desconto.
Ela deve aceitar dois parâmetros: o preço original e a taxa de desconto em porcentagem.
apply_discount(150, 10)
// => 135.0
O valor retornado deve sempre ser do tipo double, sem nenhum arredondamento.
Implemente uma função monthly_rate para calcular a taxa mensal com desconto.
Ela deve ter dois parâmetros: uma taxa horária e o desconto em porcentagem.
monthly_rate(77, 10.5)
// => 12130
A taxa mensal retornada deve ser arredondada para cima (teto) para o inteiro mais próximo.
Implemente uma função days_in_budget que recebe um orçamento, uma taxa horária e um desconto, e calcula quantos dias completos de trabalho isso cobre.
days_in_budget(20'000, 80, 11.0)
// => 35
O número de dias retornado deve ser arredondado para baixo (piso) para o inteiro mais próximo.
Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.