Visual Basic'de 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, aşağıdaki örnekte gösterildiği gibi sırasıyla * İşleci ve / İşlecini (Visual Basic) kullanır.

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ölen, bu işleç için tam sayı türleri (SByte, Byte, Short, UShort, Integer, , UInteger, Longve 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 tamsayı sayısına böldükten sonra kalanı döndürür. Bölen ve bölen tam sayı türleriyse, döndürülen değer tam sayıdır. Bölen ve bölen kayan nokta türleriyse, döndürülen değer de kayan noktadı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 (, , , , , , , ), ULong.NET Framework bir DivideByZeroException özel durum oluşturur. LongUIntegerIntegerUShortShortByteSByte veya Single veri türündeki Decimal bölme işlemlerinde .NET Framework de bir DivideByZeroException özel durum oluşturur.

Veri türünü içeren kayan Double nokta bölmelerinde özel durum oluşturmaz ve sonuç, bölmeye bağlı olarak , PositiveInfinityveya NegativeInfinityöğesini temsil eden NaNsı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 bkz . Try... Yakalamak... Finally Deyimi.

Bit Kaydırma İş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ü , , Byte, Short, UShort, Integer, UInteger, Longveya ULongolmalıdırSByte. Vardiya miktarı işleneninin veri türü olarak genişletilmeli Integer veya genişletilmelidir Integer.

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 sol vardiya 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 vardiyalar hiçbir zaman taşma özel durumları 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.

Kasa ty yazın

İş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 uygulaması sağlamanın bir yolu, Option Strict Deyimi'ni kullanmaktır. ayarlarsanızOption Strict On, Visual Basic otomatik olarak tür güvenli dönüştürmeler gerçekleştirir. Örneğin, bir değişkene değişken Integer eklemeye ve değeri bir DoubleDouble değişkene atamaya çalışırsanız, veri kaybı olmadan bir Integer değere dönüştürülebileceğinden Double işlem normal şekilde devam eder. Tür güvensiz dönüştürmeler ise ile Option Strict Onderleyici hatasına neden olur. Örneğin, bir değişkene değişken Integer eklemeye ve değeri bir DoubleInteger değişkene atamaya çalışırsanız, bir değişken türüne Integerörtük olarak dönüştürülemediğinden derleyici hatasıyla sonuçlanırDouble.

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 bkz.