Operadores Aritméticos
Os operadores aritméticos realizam operações matemáticas básicas sobre valores numéricos.
| Símbolo | Operação | Exemplo | Resultado |
|---|---|---|---|
| + | Adição | 5 + 3 | 8 |
| - | Subtração | 5 - 3 | 2 |
| * | Multiplicação | 5 * 3 | 15 |
| / | Divisão | 5 / 3 | 1 |
| % | Módulo | 5 % 3 | 2 |
| ++ | Incremento | ++x ou x++ | Incrementa em 1 |
| -- | Decremento | --x ou x-- | Decrementa em 1 |
O operador de divisão merece atenção especial: quando ambos os operandos são inteiros, o resultado é truncado. Para obter valores decimais, pelo menos um operando deve ser do tipo ponto flutuante.
Quanto aos operadores de incremento/decremento, a posição do operador altera o comportamento:
- Pré-fixado (++x): incrementa antes de usar o valor
- Pós-fixado (x++): usa o valor e depois incrementa
#include <iostream>
int main() {
// Divisão inteira vs ponto flutuante
std::cout << 15 / 6 << "\n"; // 2 (inteiro)
std::cout << 15.0 / 6 << "\n"; // 2.5 (double)
double resultado = 15 / 6; // Atribuição após divisão inteira
std::cout << resultado << "\n"; // 2.0
// Operador módulo
std::cout << 17 % 5 << "\n"; // 2
std::cout << -17 % 5 << "\n"; // -2 (sinal do dividendo)
// Incremento isolado
int valor = 10;
++valor; // Pré-fixado
std::cout << valor << "\n"; // 11
valor++; // Pós-fixado
std::cout << valor << "\n"; // 12
// Incremento em expressões
int base = 5;
int a = base++; // a recebe 5, base vira 6
int b = ++base; // base vira 7, b recebe 7
std::cout << "a: " << a << ", b: " << b << "\n";
return 0;
}
Operadores Relacionais
Utilizados para estabelecer comparações entre valores, retornando um resultado booleano.
| Símbolo | Significado | Exemplo | Resultado |
|---|---|---|---|
| > | Maior que | 10 > 3 | true |
| < | Menor que | 10 < 3 | false |
| >= | Maior ou igual | 10 >= 10 | true |
| <= | Menor ou igual | 10 <= 9 | false |
| == | Igualdade | 10 == 10 | true |
| != | Diferente | 10 != 10 | false |
#include <iostream>
int main() {
int x = 25, y = 40;
bool cmp1 = x > y; // false
bool cmp2 = x < y; // true
bool cmp3 = x >= y; // false
bool cmp4 = x <= y; // true
bool cmp5 = x == y; // false
bool cmp6 = x != y; // true
// Em C++, true é 1 e false é 0 quando impresso
std::cout << cmp1 << cmp2 << cmp3
<< cmp4 << cmp5 << cmp6 << "\n";
return 0;
}
Operadores Lógicos
Combinam expressões booleanas para formar condições mais complexas.
| Símbolo | Operação | Descrição |
|---|---|---|
| && | E lógico (AND) | Verdadeiro apenas se ambos forem verdadeiros |
| || | OU lógico (OR) | Verdadeiro se pelo menos um for verdadeiro |
| ! | NÃO lógico (NOT) | Inverte o valor lógico |
Avaliação em curto-circuito: em uma expressão com &&, se o primeiro operando for falso, o segundo não é avaliado. Com ||, se o primeiro for verdadeiro, o segundo é ignorado.
Operadores de Atribuição Composta
Simplificam operações onde uma variável recebe seu próprio valor após uma operação.
| Operador | Equivalente |
|---|---|
| += | x = x + y |
| -= | x = x - y |
| *= | x = x * y |
| /= | x = x / y |
| %= | x = x % y |
Opeardor Condicional Ternário
Única estrutura condicional em forma de operador em C++. Sintaxe compacta para expressões simples.
Sintaxe: condição ? valor_se_verdadeiro : valor_se_falso
#include <iostream>
int main() {
int nota = 75;
// Determina situação do aluno
std::string situacao = (nota >= 60) ? "Aprovado" : "Reprovado";
// Encontra o maior entre dois números
int a = 15, b = 22;
int maior = (a > b) ? a : b;
std::cout << "Situação: " << situacao << "\n";
std::cout << "Maior valor: " << maior << "\n";
return 0;
}
Operadores Bit a Bit
Manipulam diretamente os bits dos operandos, úteis em programação de baixo nível, máscaras de bits e otimizações.
| Símbolo | Nome | Operação |
|---|---|---|
| & | AND bit a bit | 1 se ambos os bits forem 1 |
| | | OR bit a bit | 1 se pelo meenos um bit for 1 |
| ^ | XOR bit a bit | 1 se os bits forem diferentes |
| ~ | NOT bit a bit | Inverte todos os bits |
| << | Deslocamento à esquerda | Multiplica por potências de 2 |
| >> | Desolcamento à direita | Divide por potências de 2 |
#include <iostream>
int main() {
unsigned char mascara = 0b00001111; // 15 em binário
// Operações bit a bit
unsigned char val1 = 0b10101010;
unsigned char val2 = 0b11001100;
std::cout << "AND: " << (val1 & val2) << "\n";
std::cout << "OR: " << (val1 | val2) << "\n";
std::cout << "XOR: " << (val1 ^ val2) << "\n";
// Deslocamentos
int numero = 8;
std::cout << "Esquerda: " << (numero << 2) << "\n"; // 32
std::cout << "Direita: " << (numero >> 1) << "\n"; // 4
return 0;
}