다음을 통해 공유


Visual Basic의 산술 연산자

산술 연산자는 리터럴, 변수, 다른 식, 함수 및 속성 호출 및 상수로 표현되는 숫자 값의 계산을 포함하는 친숙한 산술 연산을 많이 수행하는 데 사용됩니다. 또한 산술 연산자로 분류되는 비트 시프트 연산자는 피연산자의 개별 비트 수준에서 작동하고 비트 패턴을 왼쪽 또는 오른쪽으로 이동합니다.

산술 연산

다음 예제와 같이 식에 두 값을 + 연산자를 함께 추가하거나 - 연산자(Visual Basic)를 사용하여 다른 값을 뺄 수 있습니다.

Dim x As Integer
x = 67 + 34
x = 32 - 12

부정은 다음 예제와 같이 - 연산자(Visual Basic)도 사용하지만 피연산자는 하나만 사용합니다.

Dim x As Integer = 65
Dim y As Integer
y = -x

곱셈과 나눗셈은 다음 예제와 같이 * 연산자/ 연산자(Visual Basic)를 각각 사용합니다.

Dim y As Double
y = 45 * 55.23
y = 32 / 23

지수 연산은 ^ 연산자를 사용하며, 다음의 예제가 이를 잘 보여줍니다.

Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).

정수 구분은 \ 연산자(Visual Basic)를 사용하여 수행됩니다. 정수 나누기는 몫을 반환합니다. 즉, 나머지를 고려하지 않고 수위를 배당으로 나눌 수 있는 횟수를 나타내는 정수를 반환합니다. 이 연산자의 제수와 피제수는 모두 정수형(SByte, Byte, Short, UShort, Integer, UInteger, LongULong)이어야 합니다. 다른 모든 형식은 먼저 정수 형식으로 변환해야 합니다. 다음 예제에서는 정수 나누기를 보여 줍니다.

Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.

모듈러스 산술은 Mod 연산자를 사용하여 수행됩니다. 이 연산자는 분할자를 정수 횟수로 나눈 후 나머지를 반환합니다. 정수와 배당이 모두 정수 형식인 경우 반환된 값은 정수입니다. 수량자와 배당이 부동 소수점 형식인 경우 반환된 값도 부동 소수점입니다. 다음 예에서는 이러한 동작을 보여 줍니다.

Dim x As Integer = 100
Dim y As Integer = 6
Dim z As Integer
z = x Mod y
' The preceding statement sets z to 4.
Dim a As Double = 100.3
Dim b As Double = 4.13
Dim c As Double
c = a Mod b
' The preceding statement sets c to 1.18.

0으로 나누기를 시도함

0으로 나누면 관련된 데이터 형식에 따라 결과가 다릅니다. 정수 분할(SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong)에서 .NET Framework는 DivideByZeroException 예외를 발생시킵니다. .NET Framework는 Decimal 또는 Single 데이터 형식의 나누기 작업에서 예외를 DivideByZeroException로 던집니다.

부동 소수점 나누기에 Double 데이터 형식이 사용될 경우, 예외는 발생하지 않으며, 배당에 따라 NaN, PositiveInfinity, 또는 NegativeInfinity를 나타내는 클래스 멤버가 결과로 반환됩니다. 다음 표에는 값을 0으로 나누 Double 려는 다양한 결과가 요약되어 있습니다.

배당 데이터 형식 제수 데이터 유형 배당액 결과
Double Double 0 NaN (수학적으로 정의된 숫자가 아님)
Double Double > 0 PositiveInfinity
Double Double < 0 NegativeInfinity

예외를 DivideByZeroException 포착할 때, 해당 멤버를 사용하여 처리할 수 있습니다. 예를 들어 속성은 Message 예외에 대한 메시지 텍스트를 보유합니다. 자세한 내용은 Try...Catch...Finally 문을 참조하세요.

Bit-Shift 운영

비트 시프트 작업은 비트 패턴에 대한 산술 시프트를 수행합니다. 패턴은 왼쪽의 피연산자에서 포함되고 오른쪽의 피연산자는 패턴을 이동할 위치 수를 지정합니다. 연산자를 사용하여 패턴을 오른쪽으로 또는 연산자를>> 사용하여 왼쪽으로 <<이동할 수 있습니다.

패턴 피연산자의 데이터 형식은 SByte, Byte, Short, UShort, Integer, UInteger, Long 또는 ULong이어야 합니다. 시프트 양 피연산자의 데이터 유형은 Integer이거나 Integer로 확장 가능해야 합니다.

산술 시프트는 원형이 아니으므로 결과의 한쪽 끝에서 이동된 비트가 다른 쪽 끝에서 다시 도입되지 않습니다. 교대 근무로 비워진 비트 위치는 다음과 같이 설정됩니다.

  • 산술 왼쪽 시프트 시에는 0

  • 양수에 대한 산술적 오른쪽 시프트의 경우 0

  • 부호 없는 데이터 형식(Byte, UShort, UInteger, ULong)의 산술 오른쪽 시프트에서 0을 사용합니다.

  • 음수(SByte, Short, Integer, 또는 Long)에 대한 산술적 오른쪽 시프트의 경우 1

다음 예제에서는 값을 왼쪽과 오른쪽 둘 다 이동합니다 Integer .

Dim lResult, rResult As Integer
Dim pattern As Integer = 12
' The low-order bits of pattern are 0000 1100.
lResult = pattern << 3
' A left shift of 3 bits produces a value of 96.
rResult = pattern >> 2
' A right shift of 2 bits produces value of 3.

산술 시프트 연산은 오버플로 예외를 생성하지 않습니다.

비트 연산

논리 연산자일 뿐만 아니라 숫자 NotOrAndXor 값에 사용할 때 비트 산술 연산도 수행합니다. 자세한 내용은 Visual Basic의 논리 및 비트 연산자에서 "비트 연산"을 참조하세요.

형식 안전성

피연산자는 일반적으로 동일한 형식이어야 합니다. 예를 들어 변수를 Integer 더하는 경우 다른 Integer 변수에 추가해야 하며 결과를 형식 Integer 의 변수에도 할당해야 합니다.

형식 안전 코딩을 보장하는 한 가지 방법은 Option Strict 문을 사용하는 것입니다. Option Strict On을(를) 설정하면, Visual Basic은 형식 안전 변환을 자동으로 수행합니다. 예를 들어, Integer 변수를 Double 변수에 추가하고 그 값을 Double 변수에 할당하면, Integer 값은 데이터 손실 없이 Double으로 변환될 수 있기 때문에 작업이 정상적으로 진행됩니다. 반면에 형식이 안전하지 않은 변환으로 인해 컴파일러 오류가 발생합니다 Option Strict On. 예를 들어, 변수 Integer를 변수 Double에 추가하고 그 값을 변수 Integer에 할당하려고 하면, 변수 Double는 형식 Integer으로 암시적으로 변환될 수 없기 때문에 컴파일러 오류가 발생합니다.

Visual Basic에서 Option Strict Off을(를) 설정하면 암시적 축소 변환이 수행될 수 있지만, 이로 인해 데이터나 정밀도가 예기치 않게 손실될 수 있습니다. 이러한 이유로 프로덕션 코드를 작성할 때 사용하는 Option Strict On 것이 좋습니다. 자세한 내용은 확대 및 축소 변환을 참조하세요.

참고하십시오