Operators in C and C Plus Plus

The title of this article is incorrect because of technical limitations. The correct title is Operators in C and C++.

This is a list of operators in C++ programming language. Third column tells whether or not the operator in question also exists in C99 (and also in C89, since the two versions of the C language contain the same set of operators).

The following operators are sequence points in all three languages: &&, ||, ?:, and ,

C++ also contains the type conversion operators const_cast, static_cast, dynamic_cast, and reinterpret_cast which are not listed in the table for brevity.

Contents

Arithmetic Operators

Operator Name Syntax Is overloadable? In C99?
Plus Operator (unary) +a Yes. Yes.
Addition Operator a + b Yes. Yes.
Addition Prefix Operator ++a Yes. Yes.
Addition Postfix Operator a++ Yes. Yes.
Addition Assignment Operator a += b Yes. Yes.
Negation Operator (unary) -a Yes. Yes.
Subtraction Operator a - b Yes. Yes.
Subtraction Prefix Operator --a Yes. Yes.
Subtraction Postfix Operator a-- Yes. Yes.
Subtraction Assignment Operator a -= b Yes. Yes.
Multiplication Operator a * b Yes. Yes.
Multiplication Assignment Operator a *= b Yes. Yes.
Division Operator a / b Yes. Yes.
Division Assignment Operator a /= b Yes. Yes.
Modulus Operator a % b Yes. Yes.
Modulus Assignment Operator a %= b Yes. Yes

Comparison Operators

Operator Name Syntax Is overloadable? In C99?
Less Than Operator a < b Yes. Yes.
Less Than Or Equal To Operator a <= b Yes. Yes.
Greater Than Operator a > b Yes. Yes.
Greater Than Or Equal To Operator a >= b Yes. Yes.
Not Equal To Operator a != b Yes. Yes.
Equal To Operator a == b Yes. Yes.
Negation Operator !a Yes. Yes.
Logical And a && b Yes. Yes.
Logical Or a || b Yes. Yes.

Bitshift Operators

Operator Name Syntax Is overloadable? In C99?
Left Shift a << b Yes. Yes.
Left Shift + Assignment a <<= b Yes. Yes.
Right Shift a >> b Yes. Yes.
Right Shift + Assignment a >>= b Yes. Yes.

Bitwise Operators

Operator Name Syntax Is overloadable? In C99?
Bitwise Complement ~a Yes. Yes.
Bitwise And a & b Yes. Yes.
Bitwise And + Assignment a &= b Yes. Yes.
Bitwise Or a | b Yes. Yes.
Bitwise Or + Assignment a |= b Yes. Yes.
Bitwise Xor a ^ b Yes. Yes.

Other Operators

Operator Name Syntax Is overloadable? In C99?
Assignment Operator a = b Yes. Yes.
Function Call Operator a() Yes. Yes.
Array Operator a[] Yes. Yes.
Dereference Operator *a Yes. Yes.
Arrow Operator a-> Yes. Yes.
Member Operator a.b No. Yes.
Cast Operator (type)a Yes. Yes.
Comma Operator a , b Yes. Yes.
Conditional a ? b : c No. Yes.
Scope Resolution a :: b No. No.
Sizeof Operator sizeof a No. Yes.
Type Identification Operator typeid (type) No. No.

Notes

Some of the functions listed above are sometimes given longer form "names". For example, += and -= are often called PlusEqual and MinusEqual. This is also useful in performing internet searches, as major sites like google do not allow a search for "+=" for example.

Navigation

<MenuNavigation7>

Toolbox
Personal tools