Bagikan melalui


Operator Aditif: + dan -

Sintaks

expression + expression
expression - expression

Keterangan

Operator aditif adalah:

  • Penambahan (+)

  • Pengurangan (-)

Operator biner ini memiliki associativity kiri-ke-kanan.

Operator aditif mengambil operand dari jenis aritmetika atau pointer. Hasil dari operator penambahan (+) adalah jumlah operand. Hasil operator pengurangan (-) adalah perbedaan antara operan. Jika satu atau kedua operand adalah penunjuk, mereka harus mengarah ke objek, bukan ke fungsi. Jika kedua operan adalah penunjuk, hasilnya tidak bermakna kecuali keduanya adalah penunjuk ke objek dalam array yang sama.

Operator aditif mengambil operand dari jenis aritmatika, integral, dan skalar . Ini ditentukan dalam tabel berikut.

Jenis yang Digunakan dengan Operator Aditif

Jenis Makna
aritmetika Jenis integral dan mengambang secara kolektif disebut jenis "aritmatika".
integral Jenis karakter dan int dari semua ukuran (panjang, pendek) dan enumerasi adalah jenis "integral".
Skalar Operan skalar adalah operan dari jenis aritmatika atau penunjuk.

Kombinasi hukum untuk operator ini adalah:

aritmatika + aritmatika

skalar + integral

skalar integral +

aritmatika - aritmatika

skalar skalar -

Perhatikan bahwa penambahan dan pengurangan bukanlah operasi yang setara.

Jika kedua operan berjenis aritmatika, konversi yang tercakup dalam Konversi Standar diterapkan ke operand, dan hasilnya adalah jenis yang dikonversi.

Contoh

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

Penambahan pointer

Jika salah satu operand dalam operasi penambahan adalah penunjuk ke array objek, yang lain harus berjenis integral. Hasilnya adalah penunjuk dengan jenis yang sama dengan penunjuk asli dan yang menunjuk ke elemen array lain. Fragmen kode berikut mengilustrasikan konsep ini:

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

Meskipun nilai integral 1 ditambahkan ke pIntArray, itu tidak berarti "tambahkan 1 ke alamat"; sebaliknya berarti "sesuaikan penunjuk untuk menunjuk ke objek berikutnya dalam array" yang kebetulan 2 byte (atau sizeof( int )) menjauh.

Catatan

Kode formulir pIntArray = pIntArray + 1 jarang ditemukan dalam program C++; untuk melakukan kenaikan, formulir ini lebih disukai: pIntArray++ atau pIntArray += 1.

Pengurangan pointer

Jika kedua operand adalah penunjuk, hasil pengurangan adalah perbedaan (dalam elemen array) antara operand. Ekspresi pengurangan menghasilkan hasil integral jenis ptrdiff_t yang ditandatangani (ditentukan dalam standar termasuk file <stddef.h>).

Salah satu operan dapat berjenis integral, selama itu adalah operan kedua. Hasil pengurangan berjenis yang sama dengan pointer asli. Nilai pengurangan adalah penunjuk ke elemen array (n - i)th, di mana n adalah elemen yang diarahkan oleh pointer asli dan i adalah nilai integral dari operand kedua.

Lihat juga

Ekspresi dengan Operator Biner
Operator, Prioritas, dan Asosiatif Bawaan C++
Operator Aditif C