次の方法で共有


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

Visual Basic では、オペランドのデータ型に基づいて、演算結果のデータ型が決定されます。 場合によっては、データ型の範囲が、どのオペランドよりも大きくなることがあります。

データ型の範囲

関連するデータ型の範囲は、小さい方から順に、次のようになります。

  • Boolean — 可能な値は 2 個

  • SByteByte — 可能な値は 256 個の整数

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

  • IntegerUInteger — 可能な値は 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 (絶対値)

  • Single — 最大範囲は 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 になります。

浮動小数点数の算術演算

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

/ 演算子と ^ 演算子

/ 演算子は、DecimalSingle、および Double データ型に対してのみ定義されています。 各オペランドは、演算前に Visual Basic により必要に応じて適切なデータ型に拡大変換され、結果はそのデータ型になります。

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

Decimal Single Double 任意の整数型
Decimal Decimal Single Double Decimal (10 進数型)
Single Single Single Double Single
Double Double Double Double Double
任意の整数型 Decimal Single Double Double

^ 演算子は、Double データ型に対してのみ定義されています。 各オペランドは、演算前に Visual Basic により必要に応じて Double に拡大変換され、結果のデータ型は常に Double になります。

整数の算術演算

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

  • 2 項演算子の両方のオペランドのデータ型が同じである場合、結果はそのデータ型になります。 例外は Boolean で、Short に強制変換されます。

  • 符号なしオペランドと符号付きオペランドを使用する場合、結果は符号付き型で、範囲は少なくともどちらかのオペランドと同じになります。

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

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

注意

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

\+ および – 単項演算子

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

Boolean SByte Byte Short UShort Integer UInteger Long ULong
単項 + Short SByte Byte Short UShort 整数型 UInteger Long ULong
単項 Short SByte Short Short 整数型 整数型 Long Long Decimal (10 進数型)

<< および >> 演算子

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

Boolean SByte Byte Short UShort Integer UInteger Long ULong
<<>> Short SByte Byte Short UShort 整数型 UInteger Long ULong

左オペランドが DecimalSingleDouble、または String の場合、演算前に Visual Basic により Long への変換が試行され、結果のデータ型は Long になります。 右オペランド (ビット位置のシフト数) は Integer であるか、Integer に拡大変換される型である必要があります。

+、–、*、Mod 2 項演算子

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

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Short SByte Short Short 整数型 整数型 Long Long Decimal (10 進数型)
SByte SByte SByte Short Short 整数型 整数型 Long Long Decimal (10 進数型)
Byte Short Short Byte Short UShort 整数型 UInteger Long ULong
Short Short Short Short Short 整数型 整数型 Long Long Decimal (10 進数型)
UShort 整数型 整数型 UShort 整数型 UShort 整数型 UInteger Long ULong
Integer 整数型 Integer Integer Integer Integer 整数型 Long Long Decimal (10 進数型)
UInteger Long Long UInteger Long UInteger Long UInteger Long ULong
Long Long Long Long Long Long Long Long Long Decimal (10 進数型)
ULong Decimal (10 進数型) Decimal (10 進数型) ULong Decimal (10 進数型) ULong Decimal (10 進数型) ULong Decimal (10 進数型) ULong

\ 演算子

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

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Short SByte Short Short 整数型 整数型 Long Long Long
SByte SByte SByte Short Short 整数型 整数型 Long Long Long
Byte Short Short Byte Short UShort 整数型 UInteger Long ULong
Short Short Short Short Short 整数型 整数型 Long Long Long
UShort 整数型 整数型 UShort 整数型 UShort 整数型 UInteger Long ULong
Integer 整数型 Integer Integer Integer 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) でも同じです。

ビット論理演算の結果のデータ型は、オペランドのデータ型によって異なります。 AndAlsoOrElseBoolean に対してのみ定義され、各オペランドは、演算実行前に Visual Basic により必要に応じて Boolean に変換されます。

=、<>、<、>、<=、>= 演算子

両方のオペランドが Boolean である場合、Visual Basic では、TrueFalse 未満と見なされます。 数値型を String と比較する場合、演算前に Visual Basic により、String から Double への変換が試行されます。 Char または Date のオペランドは、同じデータ型の別のオペランドとのみ比較できます。 結果のデータ型は常に Boolean になります。

Not ビット演算子

次の表は、Not ビット演算子の結果のデータ型を示しています。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Not ブール型 SByte Byte Short UShort 整数型 UInteger Long ULong

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

And、Or、Xor ビット演算子

次の表は、AndOrXor ビット演算子の結果のデータ型を示しています。 この表は対称になっていることに注意してください。オペランドの順序に関係なく、オペランドのデータ型の組み合わせにより、結果のデータ型は同じになります。

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean ブール型 SByte Short Short 整数型 整数型 Long Long Long
SByte SByte SByte Short Short 整数型 整数型 Long Long Long
Byte Short Short Byte Short UShort 整数型 UInteger Long ULong
Short Short Short Short Short 整数型 整数型 Long Long Long
UShort 整数型 整数型 UShort 整数型 UShort 整数型 UInteger Long ULong
Integer 整数型 Integer Integer Integer 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 になります。 & 演算子においては、Option StrictOn の場合でも、String への変換はすべて拡大変換と見なされます。

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

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

関連項目