Visual Basic은 피연산자의 데이터 형식에 따라 작업의 결과 데이터 형식을 결정합니다. 경우에 따라 피연산자보다 범위가 큰 데이터 형식일 수 있습니다.
데이터 형식 범위
관련 데이터 형식의 범위는 다음과 같습니다.
부울 — 두 개의 가능한 값
Long, ULong — 18,446,744,073,709,551,615(1.8...E+19) 가능한 정수 값
10진수 — 1.5...E+29 가능한 정수 값, 최대 범위 7.9...E+28(절대값)
단일 — 최대 범위 3.4...E+38(절대값)
Double — 최대 범위 1.7...E+308(절대값)
Visual Basic 데이터 형식에 대한 자세한 내용은 데이터 형식을 참조하세요.
피연산자가 Nothing으로 평가되면 Visual Basic 산술 연산자는 0으로 처리합니다.
10진수 산술
10진수 데이터 형식은 부동 소수점이나 정수가 아닙니다.
, , –또는 /Mod*연산 Decimal 의 +피연산자 중 하나가 아닌 경우 다른 피연산자는 그렇지 않거나 SingleDoubleVisual Basic은 다른 피연산자를 확장합니다.Decimal 에서 작업을 Decimal수행하고 결과 데이터 형식은 다음과 같습니다 Decimal.
Floating-Point 산술 연산
Visual Basic은 이러한 작업에 가장 효율적인 데이터 형식인 Double에서 대부분의 부동 소수점 산술 연산을 수행합니다. 그러나 한 피연산자는 Single 이고 다른 피연산자는 그렇지 않으면 DoubleVisual 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 |
|
|---|---|---|---|---|---|---|---|---|---|
단항 + |
간단한 | S바이트 (SByte) | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
단항 – |
간단한 | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 십진수 |
<< 및 >> 연산자
다음 표에서는 두 비트 시프트 연산 << 자의 결과 데이터 형식과 >>. Visual Basic은 각 비트 시프트 연산자를 왼쪽 피연산자(이동할 비트 패턴)의 단항 연산자로 처리합니다.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
<<, >> |
간단한 | S바이트 (SByte) | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
왼쪽 피연산자, 또는 Visual Basic이 DecimalSingleDouble작업 전으로 Long 변환하려고 하면 결과 데이터 형식이 됩니다Long.String 오른쪽 피연산자(이동할 비트 위치 수)이거나 확장되는 Integer형식이어야 Integer 합니다.
Binary +, –, *및 Mod 연산자
다음 표에서는 이진 + 연산자와 연산자 및 – 연산자의 결과 데이터 형식을 *Mod 보여줍니다. 이 테이블은 대칭입니다. 피연산자 데이터 형식의 지정된 조합에 대해 결과 데이터 형식은 피연산자의 순서에 관계없이 동일합니다.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
간단한 | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 십진수 |
SByte |
S바이트 (SByte) | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 십진수 |
Byte |
간단한 | 간단한 | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
Short |
간단한 | 간단한 | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 십진수 |
UShort |
정수 | 정수 | UShort | 정수 | UShort | 정수 | UInteger | 길다 | ULong |
Integer |
정수 | 정수 | 정수 | 정수 | 정수 | 정수 | 길다 | 길다 | 십진수 |
UInteger |
길다 | 길다 | UInteger | 길다 | UInteger | 길다 | UInteger | 길다 | ULong |
Long |
길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 십진수 |
ULong |
십진수 | 십진수 | ULong | 십진수 | ULong | 십진수 | ULong | 십진수 | ULong |
\연산자
다음 표에서는 연산자의 결과 데이터 형식을 \ 보여줍니다. 이 테이블은 대칭입니다. 피연산자 데이터 형식의 지정된 조합에 대해 결과 데이터 형식은 피연산자의 순서에 관계없이 동일합니다.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
간단한 | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
SByte |
S바이트 (SByte) | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
Byte |
간단한 | 간단한 | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
Short |
간단한 | 간단한 | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
UShort |
정수 | 정수 | UShort | 정수 | UShort | 정수 | UInteger | 길다 | ULong |
Integer |
정수 | 정수 | 정수 | 정수 | 정수 | 정수 | 길다 | 길다 | 길다 |
UInteger |
길다 | 길다 | UInteger | 길다 | UInteger | 길다 | UInteger | 길다 | ULong |
Long |
길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 |
ULong |
길다 | 길다 | ULong | 길다 | ULong | 길다 | ULong | 길다 | ULong |
연산자의 \ 피연산자가 Decimal, Single 또는 Double인 경우 Visual Basic은 연산 전에 Long 으로 변환하려고 시도하며 결과 데이터 형식은 다음과 같습니다 Long.
관계형 및 비트 비교
관계형 작업의 결과 데이터 형식(=, , <<>, >, <=>=)은 항상 Boolean부울 데이터 형식입니다. 피연산자의 논리 연산(And, ,AndAlso, NotOr, OrElse,Xor)Boolean에도 마찬가지입니다.
비트 논리 연산의 결과 데이터 형식은 피연산자의 데이터 형식에 따라 달라집니다.
AndAlso
OrElse 단, Visual Basic은 Boolean작업을 수행하기 전에 필요에 따라 각 피연산자를 변환합니다Boolean.
=, , <>, ><, <=, = >연산자
두 피연산자 모두인 경우 Visual Basic은 Boolean다음보다 False작은 것으로 간주합니다True. 숫자 형식을 비교하는 경우 Visual Basic은 String작업 전에 변환 String 을 Double 시도합니다. A Char 또는 Date 피연산자는 동일한 데이터 형식의 다른 피연산자만 비교할 수 있습니다. 결과 데이터 형식은 항상 Boolean.
비트 Not 연산자
다음 표에서는 비트 Not 연산자에 대한 결과 데이터 형식을 보여줍니다.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Not |
불리언 (Boolean) | S바이트 (SByte) | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
피연산자, 또는 Visual Basic이 DecimalSingleDouble작업 전에 피연산자를 Long 변환하려고 하면 결과 데이터 형식이 됩니다Long.String
Bitwise And, Or 및 Xor 연산자
다음 표에서는 비트 AndOr및 Xor 연산자의 결과 데이터 형식을 보여줍니다. 이 테이블은 대칭입니다. 피연산자 데이터 형식의 지정된 조합에 대해 결과 데이터 형식은 피연산자의 순서에 관계없이 동일합니다.
Boolean |
SByte |
Byte |
Short |
UShort |
Integer |
UInteger |
Long |
ULong |
|
|---|---|---|---|---|---|---|---|---|---|
Boolean |
불리언 (Boolean) | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
SByte |
S바이트 (SByte) | S바이트 (SByte) | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
Byte |
간단한 | 간단한 | 바이트 | 간단한 | UShort | 정수 | UInteger | 길다 | ULong |
Short |
간단한 | 간단한 | 간단한 | 간단한 | 정수 | 정수 | 길다 | 길다 | 길다 |
UShort |
정수 | 정수 | UShort | 정수 | UShort | 정수 | UInteger | 길다 | ULong |
Integer |
정수 | 정수 | 정수 | 정수 | 정수 | 정수 | 길다 | 길다 | 길다 |
UInteger |
길다 | 길다 | UInteger | 길다 | UInteger | 길다 | UInteger | 길다 | ULong |
Long |
길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 | 길다 |
ULong |
길다 | 길다 | ULong | 길다 | ULong | 길다 | ULong | 길다 | ULong |
피연산자, 또는 Visual Basic이 DecimalSingleDouble작업 전에 피연산자를 Long 변환하려고 시도하면 결과 데이터 형식은 해당 피연산자의 경우와 동일합니다Long.String
기타 연산자
& 연산자는 피연산자의 String 연결에 대해서만 정의됩니다. Visual Basic은 작업 전에 필요에 따라 각 피연산자를 String 변환하고 결과 데이터 형식은 항상 String입니다. 연산자의 & 목적을 위해 모든 변환은 String 확대되는 것으로 간주됩니다(있는 경우 Option StrictOn).
Is 및 IsNot 연산자는 두 피연산자가 모두 참조 형식이어야 합니다. ...Is 식에서는 TypeOf첫 번째 피연산자가 참조 형식이어야 하고 두 번째 피연산자는 데이터 형식의 이름이어야 합니다. 이러한 모든 경우에서 결과 데이터 형식은 .입니다 Boolean.
Like 연산자는 피연산자의 String 패턴 일치에 대해서만 정의됩니다. Visual Basic은 작업 전에 필요에 따라 각 피연산자를 String 변환하려고 시도합니다. 결과 데이터 형식은 항상 Boolean.
참고하십시오
.NET