Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator Aditif:
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