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

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 で実行します。演算に先立って、各オペランドは必要に応じて適切なデータ型に拡大変換され、演算結果はそのデータ型になります。

ms235255.collapse_all(ja-jp,VS.110).gif/ および ^ 演算子

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

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

Decimal

Single

Double

任意の整数型

Decimal

10 進数

Single

Double

10 進数

Single

Single

Single

Double

Single

Double

Double

Double

Double

Double

任意の整数型

10 進数

Single

Double

Double

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

整数演算

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

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

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

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

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

[!メモ]

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

ms235255.collapse_all(ja-jp,VS.110).gif単項プラスおよび単項マイナス演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

単項 +

Short

SByte

Byte

Short

UShort

整数型

UInteger

Long

ULong

単項 –

Short

SByte

Short

Short

整数型

整数型

Long

Long

10 進数

ms235255.collapse_all(ja-jp,VS.110).gif<< および >> 演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

<<, >>

Short

SByte

Byte

Short

UShort

整数型

UInteger

Long

ULong

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

ms235255.collapse_all(ja-jp,VS.110).gif二項 +、–、*、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

Byte

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

ms235255.collapse_all(ja-jp,VS.110).gif\ 演算子

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

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

整数型

整数型

整数型

整数型

整数型

整数型

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 に変換されます。

ms235255.collapse_all(ja-jp,VS.110).gif=、<>、<、>、<=、>= 演算子

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

ms235255.collapse_all(ja-jp,VS.110).gifビットごとの Not 演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Not

Boolean

SByte

Byte

Short

UShort

整数型

UInteger

Long

ULong

オペランドが Decimal、Single、Double、または String の場合、Visual Basic は、演算の前にそれを Long に変換しようと試みます。結果のデータ型は Long になります。

ms235255.collapse_all(ja-jp,VS.110).gifビットごとの And、Or、Xor 演算子

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

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

Boolean

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

整数型

整数型

整数型

整数型

整数型

整数型

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)

Option Strict ステートメント

概念

Visual Basic の演算子および式

Visual Basic における算術演算子

Visual Basic における比較演算子

その他の技術情報

演算子 (Visual Basic)