연산자 결과의 데이터 형식(Visual Basic)

Visual Basic은 피연산자의 데이터 형식에 따라 작업의 결과 데이터 형식을 결정합니다. 경우에 따라 이것은 피연산자보다 범위가 큰 데이터 형식일 수 있습니다.

데이터 형식 범위

관련 데이터 형식의 범위는 크기가 작은 순서대로, 다음과 같습니다.

  • 부울 — 두 가지 값 가능

  • 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)개의 정수 값 가능

  • 10진수 — 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진수 연산

10진 데이터 형식은 부동 소수점도 정수도 아닙니다.

+, , *, / 또는 Mod 연산의 피연산자 하나는 Decimal이고 다른 하나는 Single 또는 Double이 아닌 경우 Visual Basic은 다른 피연산자를 Decimal로 확장합니다. 이것은 Decimal에서 연산을 수행하고 결과 데이터 형식은 Decimal입니다.

부동 소수점 연산

Visual Basic은 이러한 작업에 가장 효율적인 데이터 형식인 Double에서 대부분의 부동 소수점 연산을 수행합니다. 그러나 한 피연산자가 Single이고 다른 피연산자는 Double이 아닌 경우 Visual Basic은 Single에서 작업을 수행합니다. 이것은 작업 전에 필요에 따라 각 피연산자를 적절한 데이터 형식으로 확장하고 결과에는 해당 데이터 형식이 있습니다.

/ 및 ^ 연산자

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

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

Decimal Single Double 모든 정수 형식
Decimal 소수 단일 두 배 소수
Single 단일 단일 두 배 단일
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 정수 UInteger Long ULong
단항 Short SByte Short Short 정수 정수 Long Long 소수

<< 및 >> 연산자

다음 표에서는 두 개의 비트 시프트 연산자, <<>>의 결과 데이터 형식을 보여 줍니다. 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로 확장하는 형식이어야 합니다.

이진 +, –, *및 Mod 연산자

다음 표에서는 이진 + 연산자와 *Mod 연산자의 결과 데이터 형식을 보여 줍니다. 이 표는 대칭입니다. 피연산자 데이터 형식의 지정된 조합에 대해 결과 데이터 형식은 피연산자의 순서에 관계없이 동일합니다.

Boolean SByte Byte Short UShort Integer UInteger Long ULong
Boolean Short SByte Short Short 정수 정수 Long Long 소수
SByte SByte SByte Short Short 정수 정수 Long Long 소수
Byte Short Short Byte Short UShort 정수 UInteger Long ULong
Short Short Short Short Short 정수 정수 Long Long 소수
UShort 정수 정수 UShort 정수 UShort 정수 UInteger Long ULong
Integer 정수 정수 정수 정수 정수 정수 Long Long 소수
UInteger Long Long UInteger Long UInteger Long UInteger Long ULong
Long Long Long Long Long Long Long Long Long 소수
ULong Decimal Decimal ULong 소수 ULong 소수 ULong 소수 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 정수 정수 정수 정수 정수 정수 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입니다.

관계형 및 비트 비교

관계형 작업(=, <>, <, >, <=, >=)의 결과 데이터 형식은 항상 Boolean부울 데이터 형식입니다. Boolean 피연산자의 논리 작업(And, AndAlso, Not, Or, OrElse, Xor)에도 마찬가지입니다.

비트 논리 작업의 결과 데이터 형식은 피연산자의 데이터 형식에 따라 달라집니다. 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 Boolean SByte Byte Short UShort 정수 UInteger Long ULong

피연산자가 Decimal, Single, Double 또는 String인 경우 Visual Basic은 작업 전에 이를 Long으로 변환을 시도하고 결과 데이터 형식은 Long입니다.

비트 And, Or 및 Xor 연산자

다음 표에서는 비트 And, OrXor 연산자의 결과 데이터 형식을 보여 줍니다. 이 표는 대칭입니다. 피연산자 데이터 형식의 지정된 조합에 대해 결과 데이터 형식은 피연산자의 순서에 관계없이 동일합니다.

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 StrictOn인 경우에도 String으로 모든 변환은 확장될 것으로 간주됩니다.

IsIsNot 연산자는 두 피연산자가 모두 참조 형식이어야 합니다. TypeOf...Is 식에서는 첫 번째 피연산자가 참조 형식이고 두 번째 피연산자가 데이터 형식의 이름이어야 합니다. 이러한 모든 경우에 결과 데이터 형식은 Boolean입니다.

Like 연산자는 String 피연산자의 패턴 일치에 대해서만 정의됩니다. Visual Basic은 작업 전에 필요에 따라 각 피연산자를 String으로 변환을 시도합니다. 결과 데이터 형식은 항상 Boolean입니다.

참고 항목