Incremento nada mais é do que somar valores em uma variável numérica, e decremento é subtrair valores do mesmo. Por exemplo:
int n1, n2;
n1 = 0;
n2 = 10;
cout << n1 << "\n";
n1 = n1 + 5;
cout << n1 << "\n";
Também podemos fazer a atribuição diretamente junto com o operador aritmético (funciona com todos), dessa forma:
n1 += 5;
Apesar de podermos somar ou subtrair valores de um a um como uma operação normal, geralmente usamos operadores de incremento e decremento nas variáveis (representadas por ++
e --
, respectivamente).
Veja um exemplo abaixo:
n1++;
n2--;
Observe também que o ++
e o --
pode vir antes da variável, isso se chama pré-incremento/decremento (fazendo a conta antes da variável), quando vem depois da variável é pós-incremento/decremento (fazendo a conta depois da variável), a posição faz toda a diferença.
Veja um caso que usaríamos o pré-incremento, já que nesse caso teria que ser incrementado antes de ser exibido:
cout << ++n1 << "\n";
cout << n1 << "\n"; // Aqui ele já está incrementado.
PS: O próprio nome da linguagem C++ é baseado no incremento, como se fosse o C com incremento (ou seja, com algo à mais).
Em alguns casos, principalmente em jogos, é necessário inverter a direção ou valores de variáveis. Para tanto, existem os valores de inversão de variáveis. No caso, seria deixar o valor negativo se for positivo e vice-versa.
Veja um exemplo simples disso:
int num = 10;
cout << num << "\n\n";
num = num * -1;
cout << num << "\n\n";
Você também pode colocar o sinal negativo diretamente ao lado da variável à ser exibida, assim:
int num = 10;
cout << -num << "\n\n";
PS: Esse negativo não muda o valor da variável, só na exibição nesse cout ele faz a inversão.
Para gravar o novo valor da variável, use a multiplicação por -1 antes de exibir.
Veja um exemplo:
int num = 10;
cout << num << "\n\n"; // Valor original.
num = num * -1;
cout << -num << "\n\n"; // Retornará positivo, - com - retorna + e a variável foi alterada antes.
cout << num << "\n\n"; // Retornará negativo, já que a variável foi alterada.
PS: Só pra lembrar, + com + retornará positivo, e - com - retorna positivo. Apenas quando usarmos + e - que retornará negativo. Regra simples de matemática, iguais retornam positivo e diferentes retornam negativo.
Mas a inversão de valores mais simplificada podemos fazer com a atribuição e o operador juntos, mas com o operador vindo depois da atribuição (por exemplo, num =- num
, que inverterá os valores). Cuidado pra não confundir com o sinal de subtração com atribuição.
Os operadores lógicos são usados para que seja possível tomar decisões usando valores booleanos true e false. Geralmente são aplicadas em estruturas de controles adicionais e estruturas de repetição. Os operadores lógicos são os seguintes:
Operador | Operação | Significado |
---|---|---|
&& | AND | E |
|| | OR | Ou |
! | NOT | Não |
O operador AND
retorna true se ambos os operandos envolvidos forem verdadeiros, em outro caso retorna falso, como podem ver:
Operando 1 | Operando 2 | Resultado |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
Veja um exemplo de uso do AND:
int num;
cout << "Digite um número entre 4 e 7:\n";
cin >> num;
if(num >= 4 && num <= 7) {
cout << "\nValor aceito!\n";
}
else {
cout << "\nValor não aceito!\n";
}
O operador OR
retorna true se um dos valores pelo menos são verdadeiros, só retorna false se ambos forem falsos, como podem ver:
Operando 1 | Operando 2 | Resultado |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
Veja um exemplo de uso de OR:
int num;
cout << "Digite um número entre 3 e 8:\n";
cin >> num;
if(num < 3 || num > 8) {
cout << "\nFora do intervalo!\n";
}
else {
cout << "\nDentro do intervalo!\n";
}
PS: Tanto o AND como o OR pode ter comparações de mais de dois valores. Também podemos juntar ambos, os separando por parênteses dessa forma:
if((num >= 3 && num <= 6) || (num > 9 && num < 15) || (num > 15 && num < 20)) {
cout << "\nValor aceito!\n";
}
O operador NOT
simplesmente inverte o valor booleano do operando, por isso chamado de "Operador da Negação", age apenas sobre um valor lógico, como podem ver:
Operando | Resultado |
---|---|
false | true |
true | false |
Veja um exemplo de NOT abaixo:
int num;
num = 1;
if(!num) {
cout << "\nVou ao clube!\n";
}
else {
cout << "\nVou ao cinema!\n";
}
Veja outro exemplo:
int numero, num1, num2;
num1 = 20;
num2 = 30;
numero = !(num1 != num2);
cout << numero << "\n";
numero = !(num1 == num2);
cout << numero << "\n";
Assim como em diversas linguagens, temos no C++ o oprador ternário. O que está antes da interrogação for verdadeiro, receberá o primeiro valor do lado direito, senão receberá o segundo do lado direito.
Veja um exemplo abaixo, no qual atribuímos variáveis à ele:
int n1, n2, nota;
string res;
cout << "Digite a primeira nota: ";
cin >> n1;
cout << "Digite a segunda nota: ";
cin >> n2;
nota = (n1 + n2) / 2;
(nota >= 6) ? res = "Aprovado" : res = "Reprovado";
cout << "\nSituação do aluno: " << res << "\n";
Ou podemos colocar o retorno diretamente como condições, sem atribuir diretamente à variáveis, dessa forma:
res = (nota >= 6) ? "Aprovado" : "Reprovado";
PS: O retorno deverá ser do mesmo tipo das variáveis.
Veja outro exemplo:
int n1;
cout << "Digite um valor: ";
cin >> n1;
(n1 >= 10) ? n1++ : n1--;
cout << "\nNovo Valor de N1: " << n1 << "\n";