Visual Basic'de İşleç Önceliği

Bir ifadede birkaç işlem gerçekleştirilirse, her parça işleç önceliği olarak adlandırılan önceden belirlenerek değerlendirilir ve çözümlenir.

Öncelik Kuralları

İfadeler birden fazla kategoriye ait işleçler içerdiği zaman, aşağıdaki kurallara göre değerlendirilir:

  • Aritmetik ve birikme işleçleri, aşağıdaki bölümde açıklanan öncelik sırasına sahip olur ve bunların hepsi karşılaştırma, mantıksal ve bitwise işleçlerden daha yüksek önceliğe sahip olur.

  • Tüm karşılaştırma işleçleri eşit önceliğe sahip olur ve hepsi mantıksal ve bitsel işleçlerden daha yüksek önceliğe ancak aritmetik ve birikme işleçlerine göre daha düşük önceliğe sahip olur.

  • Mantıksal ve bitsel işleçler, aşağıdaki bölümde açıklanan öncelik sırasına sahip olur ve bunların hepsi aritmetik, birikme ve karşılaştırma işleçlerine göre daha düşük önceliğe sahip olur.

  • Eşit önceliğe sahip işleçler, ifadede görünme sırasına göre 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 Concatenation İşleçleri

Üs ( ^ )

Birli kimlik ve olumsuzlama ( + , )

Çarpma ve kayan nokta bölme ( * , / )

Tamsayı bölme ( \ )

Modüler aritmetik ( Mod )

Toplama ve çıkarma ( + , )

Dize concatenation ( & )

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 )

Birlikte ( And , AndAlso )

Kapsayıcı ayrım ( Or , OrElse )

Özel ayrım ( Xor )

Yorumlar

=işleci, atama işleci değil yalnızca eşitlik karşılaştırma işlecidir.

Dize concatenation işleci ( ) bir aritmetik işleç değildir, ancak öncelik olarak & aritmetik işleçlerle gruplandı.

ve Is IsNot işleçleri, nesne başvurusu karşılaştırma işleçleridir. İki nesnelerin değerlerini karşılaştırmazlar; yalnızca iki nesne değişkeninin aynı nesne örneğine başvurarak başvurup başvura olmadığını belirler.

İlişkilendirilebilirlik

Eşit öncelik işleçleri, çarpma ve bölme gibi bir ifadede birlikte görüntülenmişse, derleyici her işlemi soldan sağa 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ölümü (12 ile sonuçlanacak) ve ardından 12/ 4 bölümü değerlendirir ve bu da üç sonuç verir. Derleyici, işlemlerini soldan sağa doğru değerlendirene kadar, bu sıra için açıkça belirtilmiş olduğunda n1 değerlendirme n2 aynıdır. hem n1 hem de üç n2 sonucuna sahip. Bunun aksine, parantezler derleyiciyi önce 8 / 4'ü değerlendirmeye zorlediği için n3 48 sonucuna sahip olur.

Bu davranış nedeniyle, işleçlerin işleçlerin Visual Basic.

Önceliği ve BirlikteLiği Geçersiz Kılma

Parantezleri kullanarak bir ifadenin bazı bölümlerinin diğer kısımlardan önce değerlendirilmesini zorabilirsiniz. Bu, hem öncelik sırası hem de sol birliktelik sıralamalarını geçersiz kilebilir. Visual Basic, her zaman parantez içine alınmış ve bunların dışından önce gelen işlemleri gerçekleştirir. Ancak parantez içinde parantez kullanmadıkça normal önceliği ve birlikteliği sürdürür. 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.

Ayrıca bkz.