다음을 통해 공유


연산자 결과의 데이터 형식

업데이트: 2007년 11월

Visual Basic은 피연산자의 데이터 형식에 기반하여 연산의 결과 데이터 형식을 결정합니다. 경우에 따라 이 데이터 형식의 범위는 두 피연산자의 데이터 형식 범위보다 클 수 있습니다.

데이터 형식 범위

관련 데이터 형식의 범위를 가장 작은 것부터 순서대로 나열하면 다음과 같습니다.

  • Boolean — 두 개의 값 사용 가능

  • 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 — 최대 범위 7.9...E+28(절대 값)의 1.5...E+29개 정수 계열 값 사용 가능

  • 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로 수행합니다. Visual Basic에서는 연산 전에 각 피연산자를 필요에 따라 적절한 데이터 형식으로 확장하며 결과 데이터 형식은 해당 형식이 됩니다.

/ 및 ^ 연산자

/ 연산자는 Decimal, SingleDouble 데이터 형식에 대해서만 정의됩니다. Visual Basic에서는 연산 전에 각 피연산자를 필요에 따라 적절한 데이터 형식으로 확장하며 결과 데이터 형식은 해당 형식이 됩니다.

다음 표에서는 / 연산자에 대한 결과 데이터 형식을 보여 줍니다. 이 표는 대칭적입니다. 즉 피연산자 데이터 형식의 특정 조합에 대한 결과 데이터 형식은 피연산자의 순서에 상관없이 동일합니다.

Decimal

Single

Double

임의의 정수 형식

Decimal

Decimal

Single

Double

Double

Single

Single

Single

Double

Double

Double

Double

Double

Double

Double

임의의 정수 형식

Double

Double

Double

Double

^ 연산자는 Double 데이터 형식에 대해서만 정의되어 있습니다. Visual Basic에서는 연산 전에 각 피연산자를 필요에 따라 Double로 확장하며 결과 데이터 형식은 항상 Double입니다.

정수 산술 연산

정수 연산의 결과 데이터 형식은 피연산자의 데이터 형식에 따라 달라집니다. 일반적으로 Visual Basic에서는 결과 데이터 형식을 결정하기 위해 다음 정책을 사용합니다.

  • 이항 연산자의 두 피연산자가 같은 데이터 형식을 가지는 경우 결과 데이터 형식은 해당 형식이 됩니다. Boolean은 예외로 Short가 적용됩니다.

  • 부호 없는 피연산자가 부호 있는 피연산자와 함께 사용되는 경우 결과는 부호 있는 형식을 가지며 범위는 적어도 두 피연산자 중 하나보다 크게 됩니다.

  • 그렇지 않은 경우 결과는 두 피연산자 데이터 형식 중에서 더 큰 데이터 형식을 가집니다.

결과 데이터 형식은 두 피연산자 데이터 형식 모두와 다를 수도 있습니다.

참고:

결과 데이터 형식이 항상 연산 결과로 얻은 모든 가능한 값을 보유할 수 있을 만큼 크지는 않습니다. 값이 결과 데이터 형식에 비해 너무 큰 경우 OverflowException 예외가 발생할 수 있습니다.

단항 + 및 – 연산자

다음 표에서는 + 및 – 단항 연산자에 대한 결과 데이터 형식을 보여 줍니다.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

단항 +

Short

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

단항 –

Short

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

<< 및 >> 연산자

다음 표에서는 << 및 >> 비트 시프트 연산자에 대한 결과 데이터 형식을 보여 줍니다. Visual Basic에서는 각 비트 시프트 연산자를 해당 왼쪽 피연산자(이동할 비트 패턴)에서 단항 연산자로 처리합니다.

Boolean

SByte

Byte

Short

UShort

Integer

UInteger

Long

ULong

<<, >>

Short

SByte

Byte

Short

UShort

Integer

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

Integer

Integer

Long

Long

Decimal

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Decimal

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Decimal

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

Integer

Integer

Integer

Integer

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

Short

SByte

Short

Short

Integer

Integer

Long

Long

Long

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Long

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Long

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

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

\ 연산자의 피연산자 중 하나가 Decimal, Single 또는 Double인 경우 Visual Basic에서는 연산 전에 이를 Long으로 변환하며 결과 데이터 형식은 Long이 됩니다.

관계 및 비트 비교

관계 연산(=, <>, <, >, <=, >=)의 결과 데이터 형식은 항상 BooleanBoolean 데이터 형식(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

Boolean

SByte

Byte

Short

UShort

Integer

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

Boolean

SByte

Short

Short

Integer

Integer

Long

Long

Long

SByte

SByte

SByte

Short

Short

Integer

Integer

Long

Long

Long

Byte

Short

Short

Byte

Short

UShort

Integer

UInteger

Long

ULong

Short

Short

Short

Short

Short

Integer

Integer

Long

Long

Long

UShort

Integer

Integer

UShort

Integer

UShort

Integer

UInteger

Long

ULong

Integer

Integer

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

피연산자가 Decimal, Single, Double 또는 String인 경우 Visual Basic에서는 연산 전에 이를 Long으로 변환하며 결과 데이터 형식은 해당 피연산자가 이미 이전에 Long이었던 것처럼 Long이 됩니다.

기타 연산자

& 연산자는 연결된 여러 String 피연산자에 대해서만 정의되어 있습니다. Visual Basic에서는 연산 전에 각 피연산자를 필요에 따라 String으로 변환하며 결과 데이터 형식은 항상 String입니다. & 연산자의 경우 Option Strict가 On인 경우에도 String으로 변환하면 모두 확장되는 것으로 간주됩니다.

Is 및 IsNot 연산자에서는 두 피연산자가 모두 참조 형식이어야 합니다. TypeOf...Is 식에서는 첫 번째 피연산자가 참조 형식이고 두 번째 피연산자가 데이터 형식의 이름이어야 합니다. 이러한 모든 경우에 결과 데이터 형식은 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)