Tipe Data Hasil Operator (Visual Basic)

Visual Basic menentukan tipe data hasil operasi berdasarkan tipe data operand-nya. Dalam beberapa kasus, tipe ini bisa berupa jenis data dengan rentang yang lebih besar dari salah satu operand.

Rentang Tipe Data

Rentang tipe data yang relevan, dalam urutan dari yang terkecil hingga terbesar, adalah sebagai berikut:

  • Boolean — dua nilai yang mungkin

  • SByte, Byte — 256 kemungkinan nilai integral

  • Pendek, UShort — 65.536 (6,5...E+4) kemungkinan nilai integral

  • Bilangan bulat, UInteger — 4.294.967.296 (4,2...E+9) kemungkinan nilai integral

  • Panjang, ULong — 18,446,744,073,709,551,615 (1.8...E+19) kemungkinan nilai integral

  • Desimal — 1,5...E+29 kemungkinan nilai integral, rentang maksimum 7,9...E+28 (nilai absolut)

  • Tunggal — rentang maksimum 3,4...E+38 (nilai absolut)

  • Ganda — rentang maksimum 1,7...E+308 (nilai absolut)

Untuk informasi selengkapnya tentang tipe data Visual Basic, lihat Tipe Data.

Jika operand mengevaluasi ke Tidak Ada, operator aritmatika Visual Basic memperlakukannya sebagai nol.

Aritmatika Desimal

Perhatikan bahwa jenis data Desimal bukan titik mengambang atau pun bilangan bulat.

Jika salah satu operand dari operasi +, , *, /, atau Mod adalah Decimal dan yang lain bukan Single atau Double, Visual Basic memperluas operand lain ke Decimal. Visual Basic melakukan operasi di Decimal, dan jenis data hasilnya adalah Decimal.

Aritmatika Titik Mengambang

Visual Basic melakukan sebagian besar aritmatika titik mengambang di Double, yang merupakan jenis data paling efisien untuk operasi tersebut. Namun, jika satu operand adalah Tunggal dan yang lainnya bukan Double, Visual Basic melakukan operasi tersebut di Single. Visual Basic memperluas setiap operand seperlunya menurut jenis data yang sesuai sebelum operasi, dan hasilnya memiliki jenis data tersebut.

Operator / dan ^

Operator / hanya ditentukan untuk jenis data Desimal, Tunggal, dan Ganda. Visual Basic memperluas setiap operand seperlunya ke jenis data yang sesuai sebelum operasi, dan hasilnya memiliki jenis data tersebut.

Tabel berikut ini memperlihatkan tipe data hasil untuk operator /. Perhatikan bahwa tabel ini simetris; untuk kombinasi jenis data operand tertentu, jenis data hasilnya sama apa pun urutan operand-nya.

Decimal Single Double Jenis bilangan bulat apa pun
Decimal Decimal Tunggal Laju Decimal
Single Tunggal Tunggal Laju Tunggal
Double Laju Laju Laju Laju
Jenis bilangan bulat apa pun Decimal Tunggal Laju Laju

Operator ^ hanya didefinisikan untuk jenis data Double. Visual Basic memperluas setiap operand seperlunya sesuai Double sebelum operasi, dan jenis data hasil selalu Double.

Aritmatika Bilangan Bulat

Jenis data hasil operasi bilangan bulat bergantung pada jenis data operand. Secara umum, Visual Basic menggunakan kebijakan berikut untuk menentukan jenis data hasil:

  • Jika kedua operan operator biner memiliki jenis data yang sama, hasilnya memiliki jenis data tersebut. Pengecualiannya adalah Boolean, yang dipaksa untuk Short.

  • Jika operand yang tidak ditandatangani berpartisipasi dengan operand yang ditandatangani, hasilnya memiliki jenis yang ditandatangani dengan setidaknya sebagai rentang yang sebesar salah satu operand.

  • Jika tidak, hasilnya biasanya memiliki lebih besar dari dua jenis data operand.

Perhatikan bahwa jenis data hasil mungkin tidak sama dengan jenis data operand.

Catatan

Jenis data hasil tidak selalu cukup besar untuk menyimpan semua nilai yang mungkin dihasilkan dari operasi. Pengecualian OverflowException dapat terjadi jika nilai terlalu besar untuk jenis data hasil.

Tunggal + dan – Operator

Tabel berikut ini memperlihatkan jenis data hasil untuk dua operator tunggal, + dan .

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Unary + Pendek SByte Byte Pendek UShort Bilangan bulat UInteger Panjang ULong
Unary Pendek SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Decimal

Operator << dan >>

Tabel berikut ini memperlihatkan jenis data hasil untuk dua operator bit-shift, << dan >>. Visual Basic memperlakukan setiap operator bit-shift sebagai operator unary di operand kirinya (pola bit yang akan digeser).

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> Pendek SByte Byte Pendek UShort Bilangan bulat UInteger Panjang ULong

Jika operand kiri adalah Decimal, Single, Double, atau String, Visual Basic mencoba mengonversinya ke Long sebelum operasi, dan jenis data hasilnya adalah Long. Operand kanan (jumlah posisi bit yang akan digeser) harus Integer atau jenis yang melebar ke Integer.

Operator Biner +, –, *, dan Mod

Tabel berikut ini memperlihatkan jenis data hasil untuk operator biner + dan serta operator * dan Mod. Perhatikan bahwa tabel ini simetris; untuk kombinasi jenis data operand tertentu, jenis data hasilnya sama apa pun urutan operand-nya.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Pendek SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Decimal
SByte SByte SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Decimal
Byte Pendek Pendek Byte Pendek UShort Bilangan bulat UInteger Panjang ULong
Short Pendek Pendek Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Decimal
UShort Bilangan bulat Bilangan bulat UShort Bilangan bulat UShort Bilangan bulat UInteger Panjang ULong
Integer Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Panjang Panjang Decimal
UInteger Panjang Panjang UInteger Panjang UInteger Panjang UInteger Panjang ULong
Long Panjang Panjang Panjang Panjang Panjang Panjang Panjang Panjang Decimal
ULong Decimal Decimal ULong Decimal ULong Decimal ULong Decimal ULong

\ Operator

Tabel berikut ini memperlihatkan tipe data hasil untuk operator \. Perhatikan bahwa tabel ini simetris; untuk kombinasi jenis data operand tertentu, jenis data hasilnya sama apa pun urutan operand-nya.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Pendek SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
SByte SByte SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
Byte Pendek Pendek Byte Pendek UShort Bilangan bulat UInteger Panjang ULong
Short Pendek Pendek Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
UShort Bilangan bulat Bilangan bulat UShort Bilangan bulat UShort Bilangan bulat UInteger Panjang ULong
Integer Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Panjang Panjang Panjang
UInteger Panjang Panjang UInteger Panjang UInteger Panjang UInteger Panjang ULong
Long Panjang Panjang Panjang Panjang Panjang Panjang Panjang Panjang Panjang
ULong Panjang Panjang ULong Panjang ULong Panjang ULong Panjang ULong

Jika salah satu operand dari operator \ adalah Desimal, Tunggal, atau Ganda, Visual Basic mencoba mengonversinya ke Panjang sebelum operasi, dan jenis data hasilnya adalah Long.

Perbandingan Relasional dan Bitwise

Jenis data hasil dari operasi relasional (=, <>, <, >, <=, >=) selalu BooleanTipe Data Boolean. Hal yang sama berlaku untuk operasi logis (And, AndAlso, Not, Or, OrElse, Xor) pada operand Boolean.

Jenis data hasil operasi logis bitwise tergantung pada jenis data operand. Perhatikan bahwa AndAlso dan OrElse didefinisikan hanya untuk Boolean, dan Visual Basic mengonversi setiap operand seperlunya menjadi Boolean sebelum melakukan operasi.

=, <>, <, >, <=, dan >= Operator

Jika kedua operan adalah Boolean, Visual Basic akan menganggap True kurang dari False. Jika jenis numerik dibandingkan dengan String, Visual Basic mencoba mengonversi String ke Double sebelum operasi. Operand Char atau Date hanya dapat dibandingkan dengan operand lain dari jenis data yang sama. Jenis data hasilnya selalu Boolean.

Bitwise Bukan Operator

Tabel berikut ini memperlihatkan jenis data hasil untuk operator Not bitwise.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not Boolean SByte Byte Pendek UShort Bilangan bulat UInteger Panjang ULong

Jika operandnya adalah Decimal, Single, Double, atau String, Visual Basic mencoba mengonversinya ke Long sebelum operasi, dan jenis data hasilnya adalah Long.

Operator Bitwise And, Or, dan Xor

Tabel berikut ini memperlihatkan jenis data hasil untuk operator And, Or, dan Xor bitwise. Perhatikan bahwa tabel ini simetris; untuk kombinasi jenis data operand tertentu, jenis data hasilnya sama apa pun urutan operand-nya.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Boolean SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
SByte SByte SByte Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
Byte Pendek Pendek Byte Pendek UShort Bilangan bulat UInteger Panjang ULong
Short Pendek Pendek Pendek Pendek Bilangan bulat Bilangan bulat Panjang Panjang Panjang
UShort Bilangan bulat Bilangan bulat UShort Bilangan bulat UShort Bilangan bulat UInteger Panjang ULong
Integer Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Panjang Panjang Panjang
UInteger Panjang Panjang UInteger Panjang UInteger Panjang UInteger Panjang ULong
Long Panjang Panjang Panjang Panjang Panjang Panjang Panjang Panjang Panjang
ULong Panjang Panjang ULong Panjang ULong Panjang ULong Panjang ULong

Jika operand adalah Decimal, Single, Double, atau String, Visual Basic mencoba mengonversinya ke Long sebelum operasi, dan jenis data hasilnya sama seperti jika operand tersebut telahLong.

Operator Lain-lain

Operator & didefinisikan hanya untuk perangkaian operan String. Visual Basic mengonversi setiap operand seperlunya menjadi String sebelum operasi, dan jenis data hasil selalu String. Untuk tujuan operator &, semua konversi ke String dianggap melebar, bahkan jika Option Strict adalah On.

Operator Is dan IsNot mengharuskan kedua operan menjadi jenis referensi. Ekspresi TypeOf...Is mengharuskan operand pertama dari jenis referensi dan operand kedua menjadi nama jenis data. Dalam semua kasus ini, jenis data hasilnya adalah Boolean.

Operator Like didefinisikan hanya untuk pencocokan pola operand String. Visual Basic mencoba mengonversi setiap operan seperlunya menjadi String sebelum operasi. Jenis data hasilnya selalu Boolean.

Lihat juga