Prioritas Operator di Visual Basic
Ketika beberapa operasi terjadi dalam ekspresi, setiap bagian dievaluasi dan diselesaikan dalam urutan yang telah ditentukan yang disebut prioritas operator.
Aturan Prioritas
Saat ekspresi berisi operator dari lebih dari satu kategori, ekspresi dievaluasi sesuai dengan aturan berikut:
Operator aritmatika dan perangkaian memiliki urutan prioritas yang dijelaskan di bagian berikut, dan semuanya memiliki prioritas yang lebih besar daripada operator perbandingan, logis, dan bitwise.
Semua operator perbandingan memiliki prioritas yang sama, dan semuanya memiliki prioritas yang lebih besar daripada operator logis dan bitwise, tetapi kurang diutamakan daripada operator aritmatika dan perangkaian.
Operator logis dan bitwise memiliki urutan prioritas yang dijelaskan di bagian berikut, dan semuanya memiliki prioritas yang lebih rendah daripada operator aritmatika, perangkaian, dan perbandingan.
Operator dengan prioritas yang sama dievaluasi dari kiri ke kanan dalam urutan kemunculannya dalam ekspresi.
Urutan Prioritas
Operator dievaluasi dalam urutan prioritas berikut:
Operator Menunggu
Menunggu
Operator Aritmatika dan Perangkaian
Eksponensial (^
)
Identitas dan negasi unary (+
, –
)
Perkalian dan pembagian titik-mengambang (*
, /
)
Pembagian bilangan bulat (\
)
Aritmatika modular (Mod
)
Penambahan dan pengurangan (+
, –
)
Perangkaian string (&
)
Pergeseran bit aritmatika (<<
, >>
)
Operator perbandingan
Semua operator perbandingan (=
, <>
, <
, >
<=
, >=
, Is
, Like
, IsNot
, TypeOf
...Is
)
Operator Logis dan Bitwise
Negasi (Not
)
Konjungsi (And
, AndAlso
)
Disjungsi inklusif (Or
, OrElse
)
Disjungsi eksklusif (Xor
)
Komentar
Operator =
hanya merupakan operator perbandingan kesetaraan, bukan operator penugasan.
Operator perangkaian string (&
) bukan operator aritmatika, tetapi diutamakan dikelompokkan dengan operator aritmatika.
Operator Is
dan IsNot
adalah operator perbandingan referensi objek. Mereka tidak membandingkan nilai dua objek; mereka hanya memeriksa untuk menentukan apakah dua variabel objek merujuk ke instans objek yang sama.
Asosiasivitas
Ketika operator dengan prioritas yang sama muncul bersama-sama dalam ekspresi, misalnya perkalian dan pembagian, kompiler mengevaluasi setiap operasi saat menemukannya dari kiri ke kanan. Contoh berikut mengilustrasikan langkah-langkah ini:
Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)
Ekspresi pertama mengevaluasi pembagian 96 / 8 (yang menghasilkan 12) dan kemudian pembagan 12 / 4, yang menghasilkan tiga. Karena kompiler mengevaluasi operasi untuk n1
dari kiri ke kanan, evaluasinya sama ketika urutan tersebut secara eksplisit ditunjukkan untuk n2
. Keduanya n1
dan n2
memiliki hasil tiga. Sebaliknya, n3
memiliki hasil 48, karena tanda kurung memaksa kompiler untuk mengevaluasi 8 / 4 terlebih dahulu.
Karena perilaku ini, operator disebut asosiatif kiri dalam Visual Basic.
Mengesampingkan Prioritas dan Asosiatif
Anda dapat menggunakan tanda kurung untuk memaksa beberapa bagian ekspresi dievaluasi terlebih dahulu sebelum yang lain. Ini dapat mengambil alih urutan prioritas dan asosiativitas kiri. Visual Basic selalu melakukan operasi yang diapit tanda kurung sebelum operasi di luar tanda kurung. Namun, dalam tanda kurung, ia mempertahankan prioritas dan asosiativitas biasa, kecuali Anda menggunakan tanda kurung dalam tanda kurung. Contoh berikut mengilustrasikan langkah-langkah ini:
Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.