Operadores aditivos: +
e -
Sintaxe
expression + expression
expression - expression
Comentários
Os operadores de adição são:
Adição (+)
Subtração (-)
Esses operadores binários possuem associatividade da esquerda para a direita.
Os operadores de adição usam operandos de tipos aritméticos ou ponteiro. O resultado do operador de adição (+) é a soma dos operandos. O resultado do operador de subtração (-) é a diferença entre os operandos. Se um ou ambos os operandos forem ponteiros, eles devem ser ponteiros para os objetos, não para funções. Se ambos os operandos forem ponteiros, os resultados não serão significativos a menos que ambos sejam ponteiros para os objetos na mesma matriz.
Os operadores de adição usam operandos dos tipos aritmético, integral e escalar. Eles são definidos na tabela a seguir.
Tipos usados com operadores de adição
Tipo | Significado |
---|---|
aritmético | Os tipos integral e flutuante são coletivamente chamados de tipos “aritméticos”. |
integral | Os tipos char e int de todos os tamanhos (curto, longo) e enumerações são os tipos “integrais”. |
scalar | Os operandos escalares são operandos aritméticos ou de ponteiro. |
As combinações legais para usar esses operadores são:
arithmetic + arithmetic
scalar + integral
integral + scalar
arithmetic - arithmetic
scalar - scalar
Observe que a adição e subtração não são operações equivalentes.
Se ambos os operandos forem do tipo aritmético, as conversões abordadas em Conversões padrões são aplicadas aos operandos, e o resultado é do tipo convertido.
Exemplo
// expre_Additive_Operators.cpp
// compile with: /EHsc
#include <iostream>
#define SIZE 5
using namespace std;
int main() {
int i = 5, j = 10;
int n[SIZE] = { 0, 1, 2, 3, 4 };
cout << "5 + 10 = " << i + j << endl
<< "5 - 10 = " << i - j << endl;
// use pointer arithmetic on array
cout << "n[3] = " << *( n + 3 ) << endl;
}
Adição de ponteiro
Se um dos operandos em uma operação de adição é um ponteiro para uma matriz de objetos, o outro deve ser do tipo integral. O resultado é um ponteiro que tem o mesmo tipo do ponteiro original e que aponta para outro elemento da matriz. O fragmento de código a seguir ilustra esse conceito:
short IntArray[10]; // Objects of type short occupy 2 bytes
short *pIntArray = IntArray;
for( int i = 0; i < 10; ++i )
{
*pIntArray = i;
cout << *pIntArray << "\n";
pIntArray = pIntArray + 1;
}
Embora o valor de integral 1 seja adicionado a pIntArray
, isso não significa "adicionar 1 ao endereço"; significa "ajustar o ponteiro de modo a apontar para o próximo objeto na matriz" que esteja afastado por 2 bytes (ou sizeof( int )
).
Observação
O código do formato pIntArray = pIntArray + 1
raramente é encontrado em programas C++; para executar um incremento, estes formatos são preferíveis: pIntArray++
ou pIntArray += 1
.
Subtração de ponteiro
Se ambos os operandos forem ponteiros, o resultado da subtração será a diferença (em elementos de matriz) entre os operandos. A expressão de subtração gera um resultado integral com sinal do tipo ptrdiff_t
(definido no arquivo de inclusão padrão <stddef.h>).
Um dos operandos pode ser do tipo integral, desde que seja o segundo operando. O resultado da subtração é do mesmo tipo do ponteiro original. O valor da subtração é um ponteiro para o elemento de matriz (n - i), onde n é o elemento apontado pelo ponteiro original e i é o valor integral do segundo operando.
Confira também
Expressões com operadores binários
Operadores internos C++, precedência e associatividade
Operadores aditivos C
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de