次の方法で共有


演算子の結果のデータ型 (Visual Basic)

Visual Basic は、オペランドのデータ型に基づいて、演算の結果データ型を決定します。 場合によっては、どちらのオペランドよりも範囲が大きいデータ型である可能性があります。

データ型の範囲

関連するデータ型の範囲は、最小から最大の順に次のとおりです。

  • ブール値 — 2 つの可能な値

  • SByteByte — 256 個の整数値

  • ShortUShort — 65,536 (6.5...E+4) 可能な整数値

  • Integer,UInteger — 4,294,967,296 (4.2...E+9) 可能な整数値

  • LongULong — 18,446,744,073,709,551,615 (1.8...E+19) 可能な整数値

  • Decimal — 1.5...E+29 個の整数値、最大範囲 7.9...E+28 (絶対値)

  • 単一 — 最大範囲 3.4...E+38 (絶対値)

  • Double — 最大範囲 1.7...E+308 (絶対値)

Visual Basic のデータ型の詳細については、「データ型」を参照 してください

オペランドが Nothing に評価された場合、Visual Basic 算術演算子はそれを 0 として扱います。

10 進演算

Decimal データ型は浮動小数点でも整数でもないことに注意してください。

+*/、またはModのいずれかの演算のオペランドがDecimalされ、もう一方のオペランドがSingleまたはDoubleされていない場合、Visual Basic はもう一方のオペランドを拡大してDecimalします。 Decimalで操作を実行し、結果のデータ型がDecimal

Floating-Point 算術演算

Visual Basic では、このような操作で最も効率的なデータ型である Double でほとんどの浮動小数点演算が実行されます。 ただし、一方のオペランドが Single で、もう一方のオペランドが Doubleされていない場合、Visual Basic は Singleで操作を実行します。 各オペランドは、演算の前に必要に応じて適切なデータ型に拡大され、結果にはそのデータ型が含まれます。

/ および ^ 演算子

/演算子は、DecimalSingleDouble のデータ型に対してのみ定義されます。 Visual Basic では、演算の前に各オペランドが必要に応じて適切なデータ型に拡大され、結果にはそのデータ型が含まれます。

次の表に、 / 演算子の結果データ型を示します。 このテーブルは対称であることに注意してください。オペランドデータ型の特定の組み合わせの場合、結果のデータ型はオペランドの順序に関係なく同じです。

Decimal Single Double 任意の整数型
Decimal Decimal シングル ダブル Decimal
Single シングル シングル ダブル シングル
Double ダブル ダブル ダブル ダブル
任意の整数型 Decimal シングル ダブル ダブル

^演算子は、Doubleデータ型に対してのみ定義されます。 Visual Basic では、演算の前に Double するために必要に応じて各オペランドが拡大され、結果のデータ型は常に Double

整数演算

整数演算の結果データ型は、オペランドのデータ型によって異なります。 一般に、Visual Basic では、結果のデータ型を決定するために次のポリシーが使用されます。

  • 2 項演算子の両方のオペランドが同じデータ型を持つ場合、結果にはそのデータ型が含まれます。 例外が Booleanされ、 Shortが強制されます。

  • 符号なしオペランドが符号付きオペランドと一緒に参加する場合、結果は、少なくともいずれかのオペランドと同じ範囲の符号付き型になります。

  • それ以外の場合、結果は通常、2 つのオペランド データ型のうち大きくなります。

結果データ型は、どちらのオペランド データ型と同じでもない場合があることに注意してください。

結果データ型は、操作の結果として得られるすべての可能な値を保持するのに十分な大きさであるとは限りません。 結果のデータ型に対して値が大きすぎると、 OverflowException 例外が発生する可能性があります。

単項 + 演算子と – 演算子

次の表は、 +の 2 つの単項演算子の結果データ型を示しています。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
単項 + 短い SByte バイト 短い UShort 整数 UInteger Long ULong
単項 短い SByte 短い 短い 整数 整数 Long Long Decimal

<< および >> 演算子

次の表は、 <<>>の 2 つのビットシフト演算子の結果データ型を示しています。 Visual Basic では、各ビットシフト演算子を左オペランド (シフトするビット パターン) の単項演算子として扱います。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<, >> 短い SByte バイト 短い UShort 整数 UInteger Long ULong

左側のオペランドが DecimalSingleDouble、または Stringの場合、Visual Basic は操作の前に Long に変換を試み、結果のデータ型は Long。 右オペランド (シフトするビット位置の数) は、 Integer または Integerに拡大する型である必要があります。

二項 +、–、*、および Mod 演算子

次の表に、二項 + 演算子と 演算子の結果データ型と、 * 演算子と Mod 演算子を示します。 このテーブルは対称であることに注意してください。オペランドデータ型の特定の組み合わせの場合、結果のデータ型はオペランドの順序に関係なく同じです。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean 短い SByte 短い 短い 整数 整数 Long Long Decimal
SByte SByte SByte 短い 短い 整数 整数 Long Long Decimal
Byte 短い 短い バイト 短い UShort 整数 UInteger Long ULong
Short 短い 短い 短い 短い 整数 整数 Long Long Decimal
UShort 整数 整数 UShort 整数 UShort 整数 UInteger Long ULong
Integer 整数 整数 整数 整数 整数 整数 Long Long Decimal
UInteger Long Long UInteger Long UInteger Long UInteger Long ULong
Long Long Long Long Long Long Long Long Long Decimal
ULong Decimal Decimal ULong Decimal ULong Decimal ULong Decimal ULong

\演算子

次の表に、 \ 演算子の結果データ型を示します。 このテーブルは対称であることに注意してください。オペランドデータ型の特定の組み合わせの場合、結果のデータ型はオペランドの順序に関係なく同じです。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean 短い SByte 短い 短い 整数 整数 Long Long Long
SByte SByte SByte 短い 短い 整数 整数 Long Long Long
Byte 短い 短い バイト 短い UShort 整数 UInteger Long ULong
Short 短い 短い 短い 短い 整数 整数 Long Long Long
UShort 整数 整数 UShort 整数 UShort 整数 UInteger Long ULong
Integer 整数 整数 整数 整数 整数 整数 Long Long Long
UInteger Long Long UInteger Long UInteger Long UInteger Long ULong
Long Long Long Long Long Long Long Long Long Long
ULong Long Long ULong Long ULong Long ULong Long ULong

\演算子のいずれかのオペランドが DecimalSingle、または Double の場合、Visual Basic は操作の前に Long に変換を試み、結果のデータ型はLong

リレーショナル比較とビットごとの比較

リレーショナル操作の結果データ型 (=<><><=>=) は常にboolean データ型Boolean。 オペランドの論理演算 (AndAndAlsoNotOrOrElseXor) についても同様 Boolean

ビットごとの論理演算の結果データ型は、オペランドのデータ型によって異なります。 AndAlsoOrElseBooleanに対してのみ定義され、Visual Basic では、操作を実行する前に各オペランドが必要に応じてBooleanに変換されることに注意してください。

=、 <>、 <、 >、 <=、および >= 演算子

両方のオペランドが Booleanされている場合、Visual Basic では TrueFalse未満であると見なされます。 数値型が Stringと比較される場合、Visual Basic は操作の前に StringDouble に変換しようとします。 CharまたはDateオペランドは、同じデータ型の別のオペランドとのみ比較できます。 結果データ型は常に Boolean

ビットごとの Not 演算子

次の表に、ビットごとの Not 演算子の結果データ型を示します。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not ブール値 SByte バイト 短い UShort 整数 UInteger Long ULong

オペランドが DecimalSingleDouble、または Stringの場合、Visual Basic は演算の前に Long に変換を試み、結果のデータ型が Longされます。

ビットごとの And 演算子、Or 演算子、Xor 演算子

次の表に、ビットごとの AndOr、および Xor 演算子の結果データ型を示します。 このテーブルは対称であることに注意してください。オペランドデータ型の特定の組み合わせの場合、結果のデータ型はオペランドの順序に関係なく同じです。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean ブール値 SByte 短い 短い 整数 整数 Long Long Long
SByte SByte SByte 短い 短い 整数 整数 Long Long Long
Byte 短い 短い バイト 短い UShort 整数 UInteger Long ULong
Short 短い 短い 短い 短い 整数 整数 Long Long Long
UShort 整数 整数 UShort 整数 UShort 整数 UInteger Long ULong
Integer 整数 整数 整数 整数 整数 整数 Long Long Long
UInteger Long Long UInteger Long UInteger Long UInteger Long ULong
Long Long Long Long Long Long Long Long Long Long
ULong Long Long ULong Long ULong Long ULong Long ULong

オペランドが DecimalSingleDouble、または Stringの場合、Visual Basic は演算の前にオペランドを Long に変換しようとします。結果のデータ型は、そのオペランドが既に Longされている場合と同じです。

その他の演算子

&演算子は、Stringオペランドを連結する場合にのみ定義されます。 Visual Basic では、各オペランドを演算の前に String するために必要に応じて変換され、結果のデータ型は常に Stringされます。 &演算子の目的上、Stringへのすべての変換は、Option StrictOnされている場合でも拡大すると見なされます。

Is演算子とIsNot演算子では、両方のオペランドが参照型である必要があります。 TypeOf...Is式では、最初のオペランドが参照型で、2 番目のオペランドがデータ型の名前である必要があります。 これらすべての場合、結果データ型は Boolean

Like演算子は、String オペランドのパターン マッチングに対してのみ定義されます。 Visual Basic では、必要に応じて各オペランドの変換が試行され、操作の前に String されます。 結果データ型は常に Boolean

こちらも参照ください