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
, 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 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. Long
UInteger
Integer
UShort
Short
Byte
SByte
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
, Long
veya ULong
olmalı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
, ,UInteger
ULong
)Negatif bir sayının aritmetik sağa kayması için 1 (
SByte
,Short
,Integer
veyaLong
)
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
, And
ve 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 Integer
Integer
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 Double
Double
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 On
derleyici hatasına neden olur. Örneğin, bir değişkene değişken Integer
eklemeye ve değeri bir Double
Integer
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.