Operadores em C++: Guia Completo

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;
}

Tags: C++ operators bitwise arithmetic relational-operators

Publicado em 9-18 10:32