Operadores de aditivos: +
y -
Sintaxis
expression + expression
expression - expression
Comentarios
Los operadores aditivos son:
Adición (+)
Resta (-)
Estos operadores binarios tienen asociatividad de izquierda a derecha.
Los operadores aditivos toman operandos de tipos aritméticos o de puntero. El resultado del operador de suma (+) es la suma de los operandos. El resultado del operador de resta (-) es la diferencia entre los operandos. Si uno o ambos operandos son punteros, deben ser punteros a objetos, no a funciones. Si ambos operandos son punteros, los resultados no son significativos a menos que ambos sean punteros a objetos de la misma matriz.
Los operadores aditivos toman operandos de tipos aritméticos, enteros y escalares. Se definen en la tabla siguiente.
Tipos utilizados con operadores de suma
Tipo | Significado |
---|---|
aritméticos | Los tipos enteros y de punto flotante se denominan colectivamente tipos “aritméticos”. |
enteros | Los tipos char e int de todos los tamaños (long, short) y las enumeraciones son tipos “enteros”. |
escalares | Los operandos escalares son operandos de tipo aritmético o puntero. |
Las combinaciones válidas para estos operadores son:
aritméticos + aritméticos
escalares + enteros
enteros + escalares
aritméticos - aritméticos
escalares - escalares
Tenga en cuenta que la suma y resta no son operaciones equivalentes.
Si ambos operandos son de tipo aritmético, las conversiones descritas en Conversiones estándar se aplican a los operandos y el resultado es de tipo convertido.
Ejemplo
// 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;
}
Adición de puntero
Si uno de los operandos de una operación de suma es un puntero a una matriz de objetos, el otro debe ser de tipo entero. El resultado es un puntero del mismo tipo que el puntero original y que apunta a otro elemento de la matriz. En el siguiente fragmento de código se muestra este concepto:
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;
}
Aunque el valor entero 1 se suma a pIntArray
, eso no significa “sumar 1 a la dirección”, sino más bien "ajustar el puntero para que apunte al siguiente objeto de la matriz”, que resulta estar alejado 2 bytes (o sizeof( int )
).
Nota:
El código con la forma pIntArray = pIntArray + 1
raramente aparece en programas de C++; para realizar un incremento, son preferibles estas formas: pIntArray++
o pIntArray += 1
.
Resta de puntero
Si ambos operandos son punteros, el resultado de la resta es la diferencia (en elementos de matriz) entre los operandos. La expresión de resta produce un resultado entero con signo de tipo ptrdiff_t
(definido en el archivo de inclusión estándar <stddef.h>).
Uno de los operandos puede ser de tipo entero, siempre y cuando sea el segundo operando. El resultado de la resta es del mismo tipo que el puntero original. El valor de la resta es un puntero al elemento de la matriz (n - i), donde n es el elemento al que señala el puntero original e i es el valor entero del segundo operando.
Consulte también
Expresiones con operadores binarios
Operadores integrados de C++, precedencia y asociatividad
Operadores de adición de C
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de