Bagikan melalui


Operator, prioritas, dan associativitas bawaan C++

Bahasa C++ mencakup semua operator C dan menambahkan beberapa operator baru. Operator menentukan evaluasi yang akan dilakukan pada satu atau beberapa operan.

Prioritas dan asokiativitas

Prioritas operator menentukan urutan operasi dalam ekspresi yang berisi lebih dari satu operator. Asokiativitas operator menentukan apakah, dalam ekspresi yang berisi beberapa operator dengan prioritas yang sama, operand dikelompokkan dengan yang ada di sebelah kirinya atau di sebelah kanannya.

Ejaan alternatif

C++ menentukan ejaan alternatif untuk beberapa operator. Di C, ejaan alternatif disediakan sebagai makro di <header iso646.h> . Di C++, alternatif ini adalah kata kunci, dan penggunaan <iso646.h> atau C++ setara <ciso646> tidak digunakan lagi. Di Microsoft C++, /permissive- opsi atau /Za pengkompilasi diperlukan untuk mengaktifkan ejaan alternatif.

Tabel prioritas operator C++ dan associativity

Tabel berikut menunjukkan prioritas dan asokiativitas operator C++ (dari prioritas tertinggi hingga terendah). Operator dengan nomor prioritas yang sama memiliki prioritas yang sama kecuali hubungan lain secara eksplisit dipaksa oleh tanda kurung.

Deskripsi Operator Operator Alternatif
Prioritas Grup 1, tidak ada associativity
Resolusi cakupan ::
Prioritas Grup 2, asokiativitas kiri ke kanan
Pilihan anggota (objek atau penunjuk) . atau ->
Subskrip array []
Panggilan fungsi ()
Kenaikan postfix ++
Penurunan pascafiks --
Nama jenis typeid
Konversi jenis konstanta const_cast
Konversi jenis dinamis dynamic_cast
Konversi jenis yang diinterpretasikan ulang reinterpret_cast
Konversi jenis statis static_cast
Prioritas Grup 3, associativity kanan ke kiri
Ukuran objek atau jenis sizeof
Kenaikan awalan ++
Pengurangan awalan --
Pelengkap seseorang ~ compl
Logika tidak ! not
Negasi unary -
Nilai tambah unary +
Alamat &
Tidak langsung *
Buat objek new
Hancurkan objek delete
Transmisi ()
Prioritas Grup 4, asokiativitas kiri ke kanan
Pointer-to-member (objek atau penunjuk) .* atau ->*
Prioritas Grup 5, asokiativitas kiri ke kanan
Perkalian *
Divisi /
Modulus %
Prioritas Grup 6, asokiativitas kiri ke kanan
Penambahan +
Pengurangan -
Prioritas Grup 7, asokiativitas kiri ke kanan
Shift kiri <<
Shift kanan >>
Prioritas Grup 8, asokiativitas kiri ke kanan
Less than <
Lebih besar dari >
Kurang dari atau sama dengan <=
Lebih dari atau sama dengan >=
Prioritas Grup 9, asokiativitas kiri ke kanan
Kesetaraan ==
Ketidaksetaraan != not_eq
Kelompok 10 prioritas asokiativitas kiri ke kanan
Bitwise DAN & bitand
Prioritas Grup 11, asokiativitas kiri ke kanan
Bitwise eksklusif ATAU ^ xor
Prioritas Grup 12, asokiativitas kiri ke kanan
Bitwise inklusif ATAU | bitor
Prioritas Grup 13, asokiativitas kiri ke kanan
LOGIS AND && and
Prioritas Grup 14, asokiativitas kiri ke kanan
LOGIS ATAU || or
Prioritas Grup 15, asokiativitas kanan ke kiri
Bersyarat ? :
Penugasan =
Penetapan perkalian *=
Penugasan divisi /=
Penetapan modulus %=
Penugasan penambahan +=
Penugasan pengurangan -=
Penetapan shift kiri <<=
Penetapan shift kanan >>=
Penugasan BITWISE AND &= and_eq
Penugasan OR inklusif bitwise |= or_eq
Penugasan OR eksklusif bitwise ^= xor_eq
ekspresi lempar throw
Prioritas Grup 16, asokiativitas kiri ke kanan
Koma ,

Baca juga

Overloading operator