Порядок применения операторов в Visual BasicOperator Precedence in Visual Basic

Если несколько операций в выражении, каждая часть вычисляется и устранена в предопределенном порядке называется приоритета операторов.When several operations occur in an expression, each part is evaluated and resolved in a predetermined order called operator precedence.

Правила приоритетаPrecedence Rules

Если выражения содержат операторы с более чем одной категории, они вычисляются по следующим правилам:When expressions contain operators from more than one category, they are evaluated according to the following rules:

  • Арифметические операторы и операторы объединения имеют порядок приоритета, описанный в следующем разделе, и все имеют более высокий приоритет, чем сравнения, логические и битовые операторы.The arithmetic and concatenation operators have the order of precedence described in the following section, and all have greater precedence than the comparison, logical, and bitwise operators.

  • Все операторы сравнения имеют одинаковый приоритет и все имеют более высокий приоритет, чем логические и битовые операторы, но более низкий приоритет, чем арифметических операторов и операторов объединения.All comparison operators have equal precedence, and all have greater precedence than the logical and bitwise operators, but lower precedence than the arithmetic and concatenation operators.

  • Логические и битовые операторы имеют порядок приоритета, описанный в следующем разделе, и имеют более низкий приоритет, чем арифметических операций, объединения и операторы сравнения.The logical and bitwise operators have the order of precedence described in the following section, and all have lower precedence than the arithmetic, concatenation, and comparison operators.

  • Операторы с одинаковым приоритетом выполняются в порядке слева направо в том порядке, в котором они появляются в выражение.Operators with equal precedence are evaluated left to right in the order in which they appear in the expression.

Порядок приоритетаPrecedence Order

Операторы выполняются в следующем порядке:Operators are evaluated in the following order of precedence:

Оператор AwaitAwait Operator

awaitAwait

Арифметические операторы и операторы объединенияArithmetic and Concatenation Operators

Возведение в степень (^)Exponentiation (^)

Унарный и минус (+, )Unary identity and negation (+, )

Умножение и деление с плавающей запятой (*, /)Multiplication and floating-point division (*, /)

Целочисленное деление (\)Integer division (\)

Арифметический модуль (Mod)Modulus arithmetic (Mod)

Сложение и вычитание (+, )Addition and subtraction (+, )

Объединение строк (&)String concatenation (&)

Арифметический сдвиг разряда (<<, >>)Arithmetic bit shift (<<, >>)

Операторы сравненияComparison Operators

Все операторы сравнения (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf... Is)All comparison operators (=, <>, <, <=, >, >=, Is, IsNot, Like, TypeOf...Is)

Логические и битовые операторыLogical and Bitwise Operators

Отрицание (Not)Negation (Not)

Умножение (And, AndAlso)Conjunction (And, AndAlso)

Дизъюнкции (Or, OrElse)Inclusive disjunction (Or, OrElse)

Исключающего логического сложения (Xor)Exclusive disjunction (Xor)

КомментарииComments

= Оператор является только оператор сравнения на равенство, не оператор присваивания.The = operator is only the equality comparison operator, not the assignment operator.

Оператор объединения строк (&) не является арифметический оператор, но в приоритете группируются с арифметическими операторами.The string concatenation operator (&) is not an arithmetic operator, but in precedence it is grouped with the arithmetic operators.

Is И IsNot операторы являются операторами сравнения ссылок объектов.The Is and IsNot operators are object reference comparison operators. Они не выполняют сравнение значений двух объектов; они проверяют только определить, ссылаются ли две объектные переменные на один и тот же экземпляр объекта.They do not compare the values of two objects; they check only to determine whether two object variables refer to the same object instance.

АссоциативностьAssociativity

Когда операторы с одинаковым приоритетом появляются вместе в выражении, например умножение и деление, компилятор вычисляет каждую операцию по порядку слева направо.When operators of equal precedence appear together in an expression, for example multiplication and division, the compiler evaluates each operation as it encounters it from left to right. Это показано в следующем примере.The following example illustrates this.

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.The first expression evaluates the division 96 / 8 (which results in 12) and then the division 12 / 4, which results in three. Так как компилятор вычисляет операции для n1 слева направо, вычисление зависит от того, порядок явно указывается для n2.Because the compiler evaluates the operations for n1 from left to right, the evaluation is the same when that order is explicitly indicated for n2. Оба n1 и n2 имеют результат 3.Both n1 and n2 have a result of three. В отличие от этого n3 имеет в результате 48, так как круглые скобки заставляют компилятор может вычислить 8 / 4 первого.By contrast, n3 has a result of 48, because the parentheses force the compiler to evaluate 8 / 4 first.

Из-за этого поведения, операторы, называются левую ассоциативность в Visual Basic.Because of this behavior, operators are said to be left associative in Visual Basic.

Переопределение приоритет и ассоциативность операторовOverriding Precedence and Associativity

Можно использовать скобки для принудительного выполнения некоторых частей выражения раньше других.You can use parentheses to force some parts of an expression to be evaluated before others. Это можно переопределить очередность и ассоциативность слева.This can override both the order of precedence and the left associativity. Visual Basic всегда выполняет операции, заключенные в скобки, прежде чем за их пределами.Visual Basic always performs operations that are enclosed in parentheses before those outside. Тем не менее в скобки, это обеспечивает обычный приоритет и ассоциативность, если вы не используете круглые скобки в круглых скобках.However, within parentheses, it maintains ordinary precedence and associativity, unless you use parentheses within the parentheses. Это показано в следующем примере.The following example illustrates this.

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.  

См. такжеSee Also

Оператор == Operator
Оператор IsIs Operator
Оператор IsNotIsNot Operator
Оператор LikeLike Operator
Оператор TypeOfTypeOf Operator
Оператор AwaitAwait Operator
Список операторов, сгруппированных по функциональному назначениюOperators Listed by Functionality
Операторы и выраженияOperators and Expressions