Operatory dodawania: +
i -
Składnia
expression + expression
expression - expression
Uwagi
Operatory dodawania to:
Dodawanie (+)
Odejmowanie (-)
Te operatory dwuargumentowe mają łączność od lewej do prawej.
Operatory dodawania przyjmują operandy typów arytmetycznych lub wskaźników. Wynikiem operatora dodawania (+) jest suma operandów. Wynikiem operatora odejmowania (-) jest różnica między operandami. Jeśli jeden lub oba operandy są wskaźnikami, muszą być wskaźnikami do obiektów, a nie do funkcji. Jeśli oba operandy są wskaźnikami, wyniki nie są znaczące, chyba że oba są wskaźnikami do obiektów w tej samej tablicy.
Operatory addytywne przyjmują operandy arytmetycznych, całkowitych i skalarnych typów. Są one zdefiniowane w poniższej tabeli.
Typy używane z operatorami dodawania
Typ | Znaczenie |
---|---|
Arytmetyczne | Typy całkowite i zmiennoprzecinkowe są zbiorczo nazywane typami "arytmetycznymi". |
Integralną | Typy char i int wszystkich rozmiarów (długich, krótkich) i wyliczenia są typami "całkowitymi". |
Wartość skalarna | Operandy skalarne to operandy typu arytmetycznego lub wskaźnika. |
Kombinacje prawne dla tych operatorów to:
arytmetyczne arytmetyczne +
całka skalarna +
skalarny całkowitoliczbowy +
arytmetyczne arytmetyczne -
skalarny - skalarny
Należy pamiętać, że dodawanie i odejmowanie nie są równoważnymi operacjami.
Jeśli oba operandy są typu arytmetycznego, konwersje objęte konwersjami standardowymi są stosowane do operandów , a wynikiem jest przekonwertowany typ.
Przykład
// 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;
}
Dodawanie wskaźnika
Jeśli jeden z operandów w operacji dodawania jest wskaźnikiem do tablicy obiektów, drugi musi być typu całkowitego. Wynik jest wskaźnikiem, który jest tego samego typu co oryginalny wskaźnik i wskazuje inny element tablicy. Poniższy fragment kodu ilustruje tę koncepcję:
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;
}
Mimo że wartość całkowita 1 jest dodawana do pIntArray
elementu , nie oznacza "dodania wartości 1 do adresu", a raczej oznacza "dostosowanie wskaźnika w celu wskazania na następny obiekt w tablicy", który ma być 2 bajty (lub sizeof( int )
) z dala.
Uwaga
Kod formularza pIntArray = pIntArray + 1
rzadko występuje w programach języka C++. Aby wykonać przyrost, preferowane są następujące formularze: pIntArray++
lub pIntArray += 1
.
Odejmowanie wskaźnika
Jeśli oba operandy są wskaźnikami, wynikiem odejmowania jest różnica (w elementach tablicy) między operandami. Wyrażenie odejmowania zwraca podpisany całkowity wynik typu ptrdiff_t
(zdefiniowany w standardowym pliku <include stddef.h>).
Jeden z operandów może być typu całkowitego, o ile jest drugim operandem. Wynik odejmowania jest tego samego typu co oryginalny wskaźnik. Wartość odejmowania jest wskaźnikiem do elementu tablicy (n - )th, gdzie n jest elementem wskazywanym przez oryginalny wskaźnik i jest integralną wartością drugiego operandu.
Zobacz też
Wyrażenia z operatorami dwuargumentowymi
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operatory dodawania języka C
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla