100% found this document useful (2 votes)
851 views2 pages

C Operator Precedence and Associativity

The document lists C operators in order of precedence from highest to lowest. It also indicates the associativity of operators of equal precedence, which determines in what order they are applied. Parentheses have the highest precedence and are evaluated left-to-right. Postfix increment/decrement operators have high precedence but the increment/decrement is delayed until after the statement completes. The document provides details on operator precedence and associativity to understand how expressions are evaluated in C.

Uploaded by

Ashutosh Chandra
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
100% found this document useful (2 votes)
851 views2 pages

C Operator Precedence and Associativity

The document lists C operators in order of precedence from highest to lowest. It also indicates the associativity of operators of equal precedence, which determines in what order they are applied. Parentheses have the highest precedence and are evaluated left-to-right. Postfix increment/decrement operators have high precedence but the increment/decrement is delayed until after the statement completes. The document provides details on operator precedence and associativity to understand how expressions are evaluated in C.

Uploaded by

Ashutosh Chandra
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 2

C Operator Precedence and Associativity

C Programming (COP-2220)

This page lists C operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied. Operator () [] . -> ++ -++ -+ ! ~ (type) * & sizeof * / % + << >> < <= > >= == != & ^ | && || ?: = += *= %= ^= <<= , -= /= &= |= >>= Description Parentheses (function call) (see Note 1) Brackets (array subscript) Member selection via object name Member selection via pointer Postfix increment/decrement (see Note 2) Prefix increment/decrement Unary plus/minus Logical negation/bitwise complement Cast (change type) Dereference Address Determine size in bytes Multiplication/division/modulus Addition/subtraction Bitwise shift left, Bitwise shift right Relational less than/less than or equal to Relational greater than/greater than or equal to Relational is equal to/is not equal to Bitwise AND Bitwise exclusive OR Bitwise inclusive OR Logical AND Logical OR Ternary conditional Assignment Addition/subtraction assignment Multiplication/division assignment Modulus/bitwise AND assignment Bitwise exclusive/inclusive OR assignment Bitwise shift left/right assignment Comma (separate expressions) Note 1: Associativity left-to-right

right-to-left

left-to-right left-to-right left-to-right left-to-right left-to-right left-to-right left-to-right left-to-right left-to-right left-to-right right-to-left right-to-left

left-to-right

Parentheses are also used to group sub-expressions to force a different precedence; such parenthetical expressions can be nested and are evaluated from inner to outer. Note 2: Postfix increment/decrement have high precedence, but the actual increment or decrement of the operand is delayed (to be accomplished sometime before the statement completes execution). So in the statement y = x * z++; the current value of z is used to evaluate the expression (i.e., z++ evaluates to z) and z only incremented after all else is done. See postinc.c for another example.

Updated:

You might also like