Aracılığıyla paylaş


Visual Basic'te Aritmetik İşleçler

Aritmetik işleçler değişmez değerler, değişkenler, diğer ifadeler, işlev ve özellik çağrıları ve sabitler tarafından temsil edilen sayısal değerlerin hesaplanmasıyla ilgili tanıdık aritmetik işlemlerin çoğunu gerçekleştirmek için kullanılır. Ayrıca aritmetik işleçlerle sınıflandırılan bit kaydırma işleçleri, işlenenlerin tek tek bit düzeyinde hareket eder ve bit desenlerini sola veya sağa kaydırır.

Aritmetik İşlemler

Bir ifadeye + İşleci ile birlikte iki değer ekleyebilir veya aşağıdaki örnekte gösterildiği gibi - İşleci (Visual Basic) ile bir başka değerden çıkarabilirsiniz.

Dim x As Integer
x = 67 + 34
x = 32 - 12

Olumsuzlama ayrıca - İşlecini (Visual Basic) kullanır, ancak aşağıdaki örnekte gösterildiği gibi yalnızca bir işlenenle birlikte kullanılır.

Dim x As Integer = 65
Dim y As Integer
y = -x

Çarpma ve bölme sırasıyla * Operatörünü ve / Operatörünü (Visual Basic) kullanır, aşağıdaki örnekte gösterildiği gibi.

Dim y As Double
y = 45 * 55.23
y = 32 / 23

Üstelleştirme, aşağıdaki örnekte gösterildiği gibi ^ İşlecini kullanır.

Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).

Tamsayı bölme işlemi \ İşleci (Visual Basic) kullanılarak gerçekleştirilir. Tamsayı bölme bölümü, yani bölenin kalanları dikkate almadan bölme sayısını temsil eden tamsayıyı döndürür. Hem bölen hem de bölünen, bu işleç için tam sayı türleri (SByte, Byte, Short, UShort, Integer, UInteger, Long ve ULong) olmalıdır. Diğer tüm türler önce tam sayı türüne dönüştürülmelidir. Aşağıdaki örnekte tamsayı bölme gösterilmektedir.

Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.

Mod işleci kullanılarak modül aritmetiği gerçekleştirilir. Bu işleç, böleni paydaya tam sayıda böldükten sonra kalanı verir. Bölen ve bölünen tamsayı türlerindeyse, döndürülen değer tamsayıdır. Bölen ve bölünen kayan noktalı türlerse, döndürülen değer de kayan noktalıdır. Aşağıdaki örnekte bu davranış gösterilmektedir.

Dim x As Integer = 100
Dim y As Integer = 6
Dim z As Integer
z = x Mod y
' The preceding statement sets z to 4.
Dim a As Double = 100.3
Dim b As Double = 4.13
Dim c As Double
c = a Mod b
' The preceding statement sets c to 1.18.

Sıfıra Bölme Girişimi

Sıfıra bölme, ilgili veri türlerine bağlı olarak farklı sonuçlara sahiptir. İntegral bölmelerde (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), .NET Framework bir DivideByZeroException özel durum oluşturur. Decimal veya Single veri türündeki bölme işlemlerinde .NET Framework de bir DivideByZeroException özel durum fırlatır.

Kayan nokta Double veri türünü içeren bölmelerde, hiçbir özel durum atılmaz ve sonuç, bölene bağlı olarak NaN, PositiveInfinity veya NegativeInfinity'ü temsil eden bir sınıf üyesidir. Aşağıdaki tabloda, bir Double değeri sıfıra bölme girişiminin çeşitli sonuçları özetlemektedir.

Kar payı veri türü Bölen veri türü Kar payı değeri Sonuç
Double Double 0 NaN (matematiksel olarak tanımlanmış bir sayı değil)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

Bir DivideByZeroException özel durum yakaladığınızda, bu özel durumu işlemenize yardımcı olması için üyelerini kullanabilirsiniz. Örneğin, Message özelliği özel durum için ileti metnini tutar. Daha fazla bilgi için, Try...Catch...Finally Deyimi bölümüne bakın.

Bit-Shift İşlemleri

Bit kaydırma işlemi, bit deseninde aritmetik bir kaydırma gerçekleştirir. Desen soldaki işlenende yer alırken, sağdaki işlenen deseni kaydırmak için konum sayısını belirtir. İşleç ile>> deseni sağa veya İşleç ile <<sola kaydırabilirsiniz.

Desen işleneninin veri türü SByte, Byte, Short, UShort, Integer, UInteger, Long veya ULong olmalıdır. Vardiya miktarı işleneninin veri türü Integer olmalı veya Integer olacak şekilde genişletilmelidir.

Aritmetik kaydırmalar dairesel değildir, yani sonucun bir ucundan kaydırılan bitler diğer uçta yeniden giriş yapılmaz. Bir vardiya tarafından boşaltılan bit konumları aşağıdaki gibi ayarlanır:

  • Aritmetik sola kaydırma için 0

  • Pozitif bir sayının aritmetik sağa kayması için 0

  • İmzalanmamış bir veri türünün aritmetik sağa kayması için 0 (Byte, UShort, , UIntegerULong)

  • Negatif bir sayının aritmetik sağa kayması için 1 (SByte, Short, Integerveya Long)

Aşağıdaki örnek, bir Integer değeri hem sola hem de sağa kaydırıyor.

Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.

Aritmetik kaydırmalar hiçbir zaman taşma hataları oluşturmaz.

Bit Düzeyinde İşlemler

Mantıksal işleçler olmasının yanı sıra, Not, Or, Andve Xor sayısal değerlerde kullanıldığında bit düzeyinde aritmetik de gerçekleştirir. Daha fazla bilgi için Visual Basic'teki Mantıksal ve Bit Düzeyinde İşleçler'deki "Bit Düzeyinde İşlemler" bölümüne bakın.

Tür Güvenliği

İşlenenler normalde aynı türde olmalıdır. Örneğin, bir değişkenle toplama yapıyorsanız, bunu başka bir IntegerInteger değişkene eklemeniz ve sonucu da türünde Integer bir değişkene atamanız gerekir.

İyi tür güvenli kodlama uygulamaları sağlamanın bir yolu Option Strict Deyimi'ni kullanmaktır. Eğer Option Strict On ayarlarsanız, Visual Basic otomatik olarak tür güvenli dönüştürmeleri gerçekleştirir. Örneğin, bir Integer değişkenini bir Double değişkenine eklemeye ve değeri bir Double değişkene atamaya çalışırsanız, işlem normal şekilde devam eder, çünkü bir Integer değeri veri kaybı olmadan Double olarak dönüştürülebilir. Tür açısından güvensiz dönüştürmeler ise Option Strict On derleyici hatasına neden olur. Örneğin, bir Integer değişkeni bir Double değişkenine eklemeye ve değeri bir Integer değişkenine atamaya çalışırsanız, bir derleyici hatasıyla karşılaşırsınız, çünkü bir Double değişkeni türü Integer türüne örtük olarak dönüştürülemez.

Ancak ayarlarsanız Option Strict Off, Visual Basic örtük daraltma dönüştürmelerinin gerçekleşmesine izin verir, ancak bunlar beklenmeyen veri veya duyarlık kaybına neden olabilir. Bu nedenle üretim kodu yazarken kullanmanızı Option Strict On öneririz. Daha fazla bilgi için bkz. Genişletme ve Daraltma Dönüştürmeleri.

Ayrıca bakınız