Curso de C++/Operadores

Fonte: Wikiversidade

Introdução aos Operadores[editar | editar código-fonte]

Os operadores realizam, como o nome sugere, operações entre dois tipos de dados. Existem muitos operadores, mas citaremos aqui os fundamentais e, conforme as necessidades dos tópicos posteriores, citaremos todos os demais.

Você pode ver a lista completa de operadores de C++ em C++ Reference (em inglês).

Operadores aritméticos[editar | editar código-fonte]

Operadores aritméticos são utilizados para efetuar operações matemáticas entre dados. São 5 operadores aritméticos em C++:

#include <iostream>
using namespace std;

int main() {

int soma = 5 + 5; // o operador '+' realiza somas.
double subtracao = 5 - 5; // o operador '-' efetua subtração.
float multiplicacao = 5.1 * 0.5; // o operador '*' efetua multiplicação.
char divisao = 100 / 2; // o operador '/' efetua divisão.
int modulo = 51 % 5; // retorna o resto da divisão inteira.

cout << "Resultados: " << soma << ", " << subtracao << ", " << multiplicacao << ", "
     << divisao << ", " << modulo << endl;

}
A saída desse programa gera no console o seguinte:
<source lang=cpp>
Resultados: 10, 0, 2.55, 2, 10.

O quarto resultado é '2' pois 50 é o código decimal deste caracter.

Tipo de retorno[editar | editar código-fonte]

Você pode realizar operações aritméticas, obviamente, entre números. Como dito no tópico anterior, você também pode realizar operações aritméticas com os tipos char e wchar_t.

O retorno da operação será também um número (real, inteiro ou até mesmo um caracter, conforme os tipos dos operandos).

Divisão inteira e divisão real[editar | editar código-fonte]

Existe, para a linguagem, diferença entre uma divisão entre números inteiros e entre números reais (ponto flutuante). Se você fizer a divisão entre os inteiros 3 e 2, o resultado não será 1.5, será 1. Já se fizer a divisão entre os números reais (em ponto flutuante) dos deles, então sim obterá 1.5.

O motivo é que há 2 tipos de divisão: a inteira e a decimal.

Divisão inteira e o operador módulo[editar | editar código-fonte]

A divisão inteira retorna o quociente da divisão sem a parte fracionária. Isso ocorre porque a linguagem efetua a divisão enquanto o resto for maior que o divisor (logo, a divisão nunca apresentará parte fracionária).

Para obter o resto da divisão, você pode usar o operador módulo (%). Esse operador retorna, em vez do quociente, o resto da divisão inteira. É por isso que no nosso exemplo 51 % 5 resultou em 1, pois 5x10 + 1 = 51, onde 5 é o divisor, 10 é o quociente, 1 é o resto e 51 o dividendo.

Divisão real[editar | editar código-fonte]

A divisão real é aquela efetuada entre tipos ponto flutuante ou entre ponto flutuante e inteiros/caracteres. Isso efetuará a divisão até que o resto seja zero, ou quando o resto repetir-se indefinidamente (no caso de dízimas periódicas como, por exemplo, 10/3).

Se quisermos que a divisão entre inteiros retorne a divisão real, deveremos efetuar uma conversão explícita, conforme o exemplo:

int num = 3;
int num2 = 2;

cout << "Resultado: " << (float) num/num2 << endl;
// o resultado foi convertido para ponto flutuante explicitamente.