연산자 결과의 데이터 형식(Visual Basic)
Visual Basic은 피연산자의 데이터 형식에 따라 작업의 결과 데이터 형식을 결정합니다. 경우에 따라 이것은 피연산자보다 범위가 큰 데이터 형식일 수 있습니다.
데이터 형식 범위
관련 데이터 형식의 범위는 크기가 작은 순서대로, 다음과 같습니다.
부울 — 두 가지 값 가능
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, Single 및 Double 데이터 형식에 대해서만 정의됩니다. 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
)에도 마찬가지입니다.
비트 논리 작업의 결과 데이터 형식은 피연산자의 데이터 형식에 따라 달라집니다. 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 | 정수 | 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 | 정수 | 정수 | 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
식에서는 첫 번째 피연산자가 참조 형식이고 두 번째 피연산자가 데이터 형식의 이름이어야 합니다. 이러한 모든 경우에 결과 데이터 형식은 Boolean
입니다.
Like
연산자는 String
피연산자의 패턴 일치에 대해서만 정의됩니다. Visual Basic은 작업 전에 필요에 따라 각 피연산자를 String
으로 변환을 시도합니다. 결과 데이터 형식은 항상 Boolean
입니다.
참고 항목
.NET