0% found this document useful (0 votes)
43 views3 pages

Prec/Ass Operator Description Example

The document describes C++ operator precedence and associativity. It lists 17 categories of operators from highest to lowest precedence. For each category it provides the operator(s), a description of what they do, and examples. It also briefly discusses type conversion, casting, sizeof, preprocessor directives, and function pointers.

Uploaded by

cccrosss
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views3 pages

Prec/Ass Operator Description Example

The document describes C++ operator precedence and associativity. It lists 17 categories of operators from highest to lowest precedence. For each category it provides the operator(s), a description of what they do, and examples. It also briefly discusses type conversion, casting, sizeof, preprocessor directives, and function pointers.

Uploaded by

cccrosss
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Prec/Ass

Operator

Description

Example

1 None

:: ::

Global scope (unary) Class scope (binary)

::g_nGlobalVar = 5; Class::m_nMemberVar = 5;

() () () [] . -> 2 L->R ++ typeid const_cast dynamic_cast reinterpret_cast static_cast

Parenthesis Function call Implicit assignment Array subscript Member access from object Member access from object ptr Post-increment Post-decrement Run-time type information Cast away const Run-time type-checked cast Cast one type to another Compile-time type-checked cast

(x + y) * 2; Add(x, y); int nValue(5); aValue[3] = 2; cObject.m_nValue = 4; pObject->m_nValue = 4; nValue++; nValue; typeid(cClass).name(); const_cast<int*>(pnConstValue); dynamic_cast<Shape*>(pShape); reinterpret_cast<Class2>(cClass1); fValue = static_cast<float>(nValue);

+ ++ ! ~ 3 R->L (type) sizeof & * new new[] delete delete[]

Unary plus Unary minus Pre-increment Pre-decrement Logical NOT Bitwise NOT C-style cast Size in bytes Address of Dereference Dynamic memory allocation Dynamic array allocation Dynamic memory deletion Dynamic array deletion

nValue = +5;M nValue = -1; ++nValue; nValue; if (!bValue) nFlags = ~nFlags; float fValue = (float)nValue; sizeof(int); address = &nValue; nValue = *pnValue; int *pnValue = new int; int *panValue = new int[5]; delete pnValue; delete[] panValue;

4 L->R

->* .*

Member pointer selector Member object selector

pObject->*pnValue = 24; cObject->.*pnValue = 24;

* 5 L->R / %

Multiplication Division Modulus

int nValue = 2 * 3; float fValue = 5.0 / 2.0; int nRemainder = 10 % 3;

6 L->R

+ -

Addition Subtraction

int nValue = 2 + 3; int nValue = 2 3;

7 L->R

<< >>

Bitwise shift left Bitwise shift right

int nFlags = 17 << 2; int nFlags = 17 >> 2;

< 8 L->R <= > >=

Comparison less than Comparison less than or equals Comparison greater than Comparison greater than or equals

if (x < y) if (x <= y) if (x > y) if (x >= y)

9 L->R

== !=

Equality Inequality

if (x == y) if (x != y)

10 L->R

&

Bitwise AND

nFlags = nFlags & 17;

11 L->R

Bitwise XOR

nFlags = nFlags ^ 17;

12 L->R

Bitwise OR

nFlags = nFlags | 17;

13 L->R

&&

Logical AND

if (bValue1 && bValue2)

14 L->R

||

Logical OR

if (bValue1 || bValue2)

15 L->R

?:

Arithmetic if

return (x < y) ? true : false;

= *= /= %= += 16 R->L -= <<= >>= &= |= ^=

Assignment Multiplication assignment Division assignment Modulus assignment Addition assignment Subtraction assignment Bitwise shift left assignment Bitwise shift right assignment Logical AND assingment Logical OR assignment Logical XOR assignment

nValue = 5; nValue *= 5; fValue /= 5.0; nValue %= 5; nValue += 5; nValue -= 5; nFlags <<= 2; nFlags >>= 2; nFlags &= 17; nFlags |= 17; nFlags ^= 17;

17 L->R

Comma operator

iii++, jjj++, kkk++;

Type conversion and casting

heirarchy of data types:


Long double (highest) Double Float Unsigned long int Long int Unsigned int Int (lowest) *Char and short are always implicitly promoted to integers

sizeof(<variable or type(also objetcs)>) ; return number of bytes

Preprocessors directives:
#ifndef <NOMBRE> (asking if NOMBRE is defined) #endif (close the block if)

#define <NOMBRE> (to define NOMBRE)

Defining a function pointe


int (*f)(int);

You might also like