Visual Basic'de İşleç Önceliği
Bir ifadede birkaç işlem gerçekleştiğinde, her bölüm işleç önceliği olarak adlandırılan önceden belirlenmiş bir sırada değerlendirilir ve çözümlenir.
Öncelik Kuralları
İfadeler birden fazla kategoriden işleç içerdiğinde, aşağıdaki kurallara göre değerlendirilir:
Aritmetik ve birleştirme işleçleri, aşağıdaki bölümde açıklanan öncelik sırasına sahiptir ve bunların tümü karşılaştırma, mantıksal ve bit düzeyinde işleçlerden daha yüksek önceliğe sahiptir.
Tüm karşılaştırma işleçleri eşit önceliğe sahiptir ve tümü mantıksal ve bit düzeyinde işleçlerden daha yüksek önceliğe sahiptir, ancak aritmetik ve birleştirme işleçlerinden daha düşük önceliğe sahiptir.
Mantıksal ve bit düzeyinde işleçler, aşağıdaki bölümde açıklanan öncelik sırasına sahiptir ve bunların tümü aritmetik, birleştirme ve karşılaştırma işleçlerinden daha düşük önceliğe sahiptir.
Eşit önceliğe sahip işleçler ifadede göründükleri sırada soldan sağa değerlendirilir.
Öncelik Sırası
İşleçler aşağıdaki öncelik sırasına göre değerlendirilir:
Await İşleci
Bekliyor
Aritmetik ve Birleştirme İşleçleri
Üs (^
)
Birli kimlik ve olumsuzlama (+
, –
)
Çarpma ve kayan nokta bölme (*
, /
)
Tamsayı bölme (\
)
Modüler aritmetik (Mod
)
Toplama ve çıkarma (+
, –
)
Dize birleştirme (&
)
Aritmetik bit kaydırması (<<
, >>
)
Karşılaştırma İşleçleri
Tüm karşılaştırma işleçleri (=
, <>
, <
, <=
, >
, >=
, , Is
IsNot
, Like
, .TypeOf
..Is
)
Mantıksal ve Bit Düzeyinde İşleçler
Olumsuzlama (Not
)
And
Bağlay (, AndAlso
)
Kapsayıcı ayrıştırma (Or
, OrElse
)
Özel karar verme (Xor
)
Açıklamalar
işleci =
yalnızca eşitlik karşılaştırma işlecidir, atama işleci değildir.
Dize birleştirme işleci (&
) bir aritmetik işleç değildir, ancak öncelikli olarak aritmetik işleçlerle gruplandırılır.
Is
ve IsNot
işleçleri nesne başvurusu karşılaştırma işleçleridir. İki nesnenin değerlerini karşılaştırmaz; yalnızca iki nesne değişkeninin aynı nesne örneğine başvurup başvurmadığını denetler.
İlişkilendirilebilirlik
İfadede eşit öncelikli işleçler birlikte görüntülendiğinde(çarpma ve bölme gibi), derleyici her işlemi soldan sağa doğru karşılaştığında değerlendirir. Aşağıdaki örnek bunu göstermektedir.
Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)
İlk ifade, 96 / 8 bölmesini (12 ile sonuçlanan) ve ardından 12 / 4 bölümünü değerlendirir ve bu da üç ile sonuçlar. Derleyici için işlemleri n1
soldan sağa doğru değerlendirdiğinden, için bu sıra açıkça belirtildiğinde n2
değerlendirme aynıdır. n2
Hem hem de n1
üç sonucunu elde edin. Buna karşılık, n3
parantezler derleyiciyi önce 8/4'ün değerlendirilmesini zorladığı için 48 sonucunu elde eder.
Bu davranış nedeniyle işleçlerin Visual Basic'te ilişkilendirilebilir olduğu söylenir.
Öncelik ve İlişkilendirmeyi Geçersiz Kılma
İfadenin bazı bölümlerinin diğerlerinden önce değerlendirilmesini zorlamak için parantez kullanabilirsiniz. Bu, hem öncelik sırasını hem de sol ilişkilendirmeyi geçersiz kılabilir. Visual Basic her zaman dıştakilerden önce parantez içine alınmış işlemleri gerçekleştirir. Bununla birlikte, parantez içinde parantezler kullanmadığınız sürece, parantez içinde sıradan önceliği ve ilişkilendirmeyi korur. Aşağıdaki örnek bunu göstermektedir.
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.