Visual Basic에서의 연산자 우선 순위
식에서 여러 작업이 발생하면 각 파트는 연산자 우선 순위라고 하는 미리 결정된 순서로 평가되고 확인됩니다.
우선 순위 규칙
식에 둘 이상의 범주의 연산자가 포함된 경우 다음 규칙에 따라 계산됩니다.
산술 연산자와 연결 연산자는 다음 섹션에 설명된 우선 순위 순서를 가지며 모두 비교, 논리 및 비트 연산자보다 우선 순위가 더 큽니다.
모든 비교 연산자는 동일한 우선 순위를 가지며 모두 논리 연산자 및 비트 연산자보다 우선 순위가 크지만 산술 연산자 및 연결 연산자보다 우선 순위가 낮습니다.
논리 연산자와 비트 연산자는 다음 섹션에서 설명하는 우선 순위 순서를 가지며, 모두 산술, 연결 및 비교 연산자보다 우선 순위가 낮습니다.
우선 순위가 같은 연산자는 식에 나타나는 순서대로 왼쪽에서 오른쪽으로 계산됩니다.
선행 순서
연산자는 다음 우선 순위 순서로 평가됩니다.
Await 연산자
Await
산술 연산자 및 연결 연산자
지수(^
)
단항 ID 및 부정(+
, –
)
곱하기 및 부동 소수점 나누기(*
, /
)
정수 나누기(\
)
모듈식 산술(Mod
)
더하기 및 빼기(+
, –
)
문자열 연결(&
)
산술 비트 시프트(<<
, >>
)
비교 연산자
모든 비교 연산자(=
, <>
, <
, <=
, >
, >=
, Is
, IsNot
, Like
, TypeOf
...Is
)
논리 및 비트 연산자
부정(Not
)
논리곱(And
, AndAlso
)
포괄 분리(Or
, OrElse
)
배타적 분리(Xor
)
설명
=
연산자는 대입 연산자가 아니라 같음 비교 연산자일 뿐입니다.
문자열 연결 연산자(&
)는 산술 연산자가 아니지만 우선적으로 산술 연산자를 사용하여 그룹화됩니다.
Is
및 IsNot
연산자는 개체 참조 비교 연산자입니다. 두 개체의 값은 비교하지 않습니다. 두 개체 변수가 동일한 개체 인스턴스를 참조하는지 여부만 확인합니다.
associativity
같은 우선 순위의 연산자가 식에 함께 나타나는 경우(예: 곱하기 및 나누기) 컴파일러는 각 연산이 왼쪽에서 오른쪽으로 발생할 때 각 연산을 평가합니다. 다음 예제에서는 이것을 보여 줍니다.
Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)
첫 번째 식은 나누기 96/8(결과 12)을 계산한 다음, 나누기 12/4를 계산하여 3을 생성합니다. 컴파일러는 왼쪽에서 오른쪽으로 n1
에 대한 작업을 평가하므로 해당 순서가 n2
에 대해 명시적으로 표시될 때 평가는 동일합니다. n1
및 n2
모두 3의 결과를 갖습니다. 반면, n3
괄호로 인해 컴파일러가 8/4를 먼저 평가하도록 강제하기 때문에 48의 결과가 발생합니다.
이 동작으로 인해 연산자는 Visual Basic에서 왼쪽 결합합니다.
우선 순위 및 결합성 재정의
괄호를 사용하여 식의 일부 부분을 다른 부분 앞에 강제로 계산할 수 있습니다. 우선 순위와 왼쪽 결합성을 모두 재정의할 수 있습니다. Visual Basic은 항상 외부에 괄호로 묶인 작업을 수행합니다. 그러나 괄호 내에서 괄호 안에 괄호를 사용하지 않는 한 일반적인 우선 순위와 결합성을 유지합니다. 다음 예제에서는 이것을 보여 줍니다.
Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.
참고 항목
.NET