In all popular high-level programming languages, the order in which operators are interpreted ("operator precedence") is vital to ensuring that all compilers execute instructions in precisely the same manner, as the "order of operations" rule is vital in mathematics.
In the case of C and C++, arithmetic operators are executed prior to logic operators. For a detailed description of operator precedence, see the related links below.
Chat with our AI personalities
Arithmetic operators (+, -, *, /, % ) have greater precedence over relational operators (<, >, <=, >=, ==, !=) in C language.
Each operator has a certain precedence level, usually some numeric value. As you parse the expression, you compare the precedence of each operator with the precedence of the last operator, and you either generate code or you push the operator and its operand(s) on two stacks.
The logical OR operator can be compared to ____ in terms of precedence.
Expressions are evaluated according to the language grammar. Operator precedence and associativity are derived from the grammar in order to aid our understanding, however the order of evaluation is independent of both because the C language standard does not specify operator precedence. The general arithmetic rules of precedence hold for most expressions such that parenthesised operations take precedence over orders followed by multiplication/division operations and finally addition/subtraction operations (as per the PODMAS acronym). Many of the more complex expressions we encounter can generally be evaluated according to the operator precedence table, which includes the associativity, such that operations with higher precedence are bound more tightly (as if with parenthesis) than those with lower precedence.
Precedence is determined by operators only. Every operator has a precedence in the range 1 through 17, where 1 has the highest precedence. All precedences have left-to-right associativity except 3 and 15 which are right-to-left. Precedence 1: scope-resolution operator Precedence 2: postfix increment/decrement, function-style type cast, function call, array subscripting and selection by reference or pointer. Precedence 3: prefix increment/decrement, unary plus/minus, logical and bitwise NOT, C-style cast, dereferencing, address-of, sizeof, new/new [] and delete/delete []. Precedence 4: pointer to member. Precedence 5: multiplication, division and modulo. Precedence 6: addition and substraction. Precedence 7: bitwise left/right shift. Precedence 8: relational operators (<, <=, > and >=). Precedence 9: equal/not equal operators (= and !=) Precedence 10: bitwise AND Precedence 11: bitwise XOR Precedence 12: bitwise OR Precedence 13: logical AND Precedence 14: llogical OR Precedence 15: ternary conditional, assignment and compound assignment. Precedence 16: throw Precedence 17: comma