演算子の結果のデータ型

更新 : 2007 年 11 月

Visual Basic は、オペランドのデータ型を基に、演算結果のデータ型を確認します。これは、いずれかのオペランドよりも広い範囲を持つデータ型である可能性もあります。

データ型の範囲

次に、対象となるデータ型の範囲を小さいものから順に示します。

  • Boolean : 2種類の値

  • SByte, Byte : 256 種類の整数値

  • Short, UShort : 65,536 (6.5...E+4) 種類の整数値

  • Integer, UInteger : 4,294,967,296 (4.2...E+9) 種類の整数値

  • Long, ULong : 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 のデータ型の詳細については、「データ型の概要 (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

10 進数型

単精度浮動小数点型

倍精度浮動小数点数型

倍精度浮動小数点数型

Single

単精度浮動小数点型

単精度浮動小数点型

倍精度浮動小数点数型

倍精度浮動小数点数型

Double

倍精度浮動小数点数型

倍精度浮動小数点数型

倍精度浮動小数点数型

倍精度浮動小数点数型

任意の整数型

倍精度浮動小数点数型

倍精度浮動小数点数型

倍精度浮動小数点数型

倍精度浮動小数点数型

^ 演算子は、Double データ型向けに定義されています。Visual Basic は、演算に先立って、各オペランドを必要に応じて Double に変換し、結果のデータ型は必ず Double です。

整数演算

整数演算の結果のデータ型は、オペランドのデータ型に依存します。一般的に、Visual Basic は次のポリシーを使用して結果のデータ型を決定します。

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

  • 符号なしオペランドと符号付きオペランドの演算を行うと、結果は、最低でもいずれかのオペランドの範囲を持つ符号付きのデータ型になります。

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

結果のデータ型が、いずれのオペランドのデータ型と同じにならない場合もあります。

ms235255.alert_note(ja-jp,VS.90).gifメモ :

演算結果として返される値が大きすぎる場合、結果のデータ型に格納できないこともあります。結果のデータ型よりも値が大きい場合、OverflowException 例外が発生します。

単項プラスおよび単項マイナス演算子

次の表に、2 つの単項演算子 + および – の結果のデータ型を示します。

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

単項 +

短整数型 (Short)

SByte型

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

単項 –

短整数型 (Short)

SByte型

短整数型 (Short)

短整数型 (Short)

整数型

整数型

長整数型 (Long)

長整数型 (Long)

10 進数型

<< および >> 演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

<<, >>

短整数型 (Short)

SByte型

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

左側のオペランドが Decimal、Single、Double、または String の場合、Visual Basic では演算の前にこれが Long に変換され、結果のデータ型は Long になります。右側のオペランド (シフトするビット数) は Integer または Integer に拡大変換できるデータ型である必要があります。

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

二項 + と – 演算子、および * と Mod 演算子の結果のデータ型を次の表に示します。この表が、オペランドのデータ型の組み合わせで左右対称である点に注目してください。結果のデータ型は、オペランドの順序にかかわらず同じです。

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Boolean

短整数型 (Short)

SByte型

短整数型 (Short)

短整数型 (Short)

整数型

整数型

長整数型 (Long)

長整数型 (Long)

10 進数型

SByte

SByte型

SByte型

短整数型 (Short)

短整数型 (Short)

整数型

整数型

長整数型 (Long)

長整数型 (Long)

10 進数型

Byte

短整数型 (Short)

短整数型 (Short)

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

Short

短整数型 (Short)

短整数型 (Short)

短整数型 (Short)

短整数型 (Short)

整数型

整数型

長整数型 (Long)

長整数型 (Long)

10 進数型

UShort

整数型

整数型

ushort型

整数型

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

Integer

整数型

整数型

整数型

整数型

整数型

整数型

長整数型 (Long)

長整数型 (Long)

10 進数型

UInteger

長整数型 (Long)

長整数型 (Long)

UInteger型

長整数型 (Long)

UInteger型

長整数型 (Long)

UInteger型

長整数型 (Long)

ulong型

Long

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

長整数型 (Long)

10 進数型

ULong

10 進数型

10 進数型

ulong型

10 進数型

ulong型

10 進数型

ulong型

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)

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

Short

短整数型 (Short)

短整数型 (Short)

短整数型 (Short)

短整数型 (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) (Visual Basic) です。これは、Boolean オペランドの論理演算 (And、AndAlso、Not、Or、OrElse、Xor) でも同様です。

ビットごとの論理演算の結果のデータ型は、オペランドのデータ型に依存します。AndAlso および OrElse は、Boolean 用にのみ定義されており、Visual Basic では、演算が実行される前に、必要に応じて各オペランドが Boolean に変換されます。

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

両方のオペランドが Boolean の場合、Visual Basic では True の値を False よりも小さいものとして見なします。数値型を String と比較する場合、Visual Basic では演算に先立って String が Double に変換されます。Char または Date のオペランドは、同じデータ型のオペランドとのみ比較可能です。結果のデータ型は常に Boolean です。

ビットごとの Not 演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Not

ブール値

SByte型

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

オペランドが Decimal、Single、Double、または String の場合、Visual Basic では演算の前にこれが Long に変換され、結果のデータ型は Long になります。

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

次の表に、ビットごとの And、Or、および Xor 演算子の結果のデータ型を示します。この表が、オペランドのデータ型の組み合わせで左右対称である点に注目してください。結果のデータ型は、オペランドの順序にかかわらず同じです。

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)

バイト型

短整数型 (Short)

ushort型

整数型

UInteger型

長整数型 (Long)

ulong型

Short

短整数型 (Short)

短整数型 (Short)

短整数型 (Short)

短整数型 (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型

オペランドが Decimal、Single、Double、または String の場合、Visual Basic では演算の前にこれが Long に変換され、結果のデータ型は Long になります。

その他の演算子

& 演算子は、String オペランドの連結のために定義されています。Visual Basic では、演算に先立って、各オペランドが必要に応じて String に変換され、結果のデータ型は必ず String になります。Option Strict が On の場合でも、& 演算子の目的のために、String への変換はすべて拡大変換の対象となります。

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

Like 演算子は、String オペランドのパターン一致用にのみ定義されています。Visual Basic では、演算に先立って、必要に応じて各オペランドを String に変換します。結果のデータ型は常に Boolean です。

参照

概念

Visual Basic の演算子および式

Visual Basic における算術演算子

Visual Basic における比較演算子

参照

データ型の概要 (Visual Basic)

Visual Basic における演算子の優先順位

機能別の演算子一覧

算術演算子 (Visual Basic)

比較演算子 (Visual Basic)

Option Strict ステートメント

その他の技術情報

演算子 (Visual Basic)