Operators in C++ – Types and Examples
In this article, we will discuss operators in C++.
Operators form the basis of a programming language. Operators are symbols that operate on operands. These operands can be variables or values. Operators help us to perform mathematical and logical computations.
Types of Operators in C++
In C++, operators are classified into 6 types:
1. Arithmetic Operators in C++
We use arithmetic operators to perform mathematical operations.
Operator | Operation | Description |
+ | Addition | Adds two values |
– | Subtraction | Subtracts one value from another |
* | Multiplication | Multiplies two values |
/ | Division | Divides one value by another |
% | Modulus | Computes the remainder |
++ | Increment | Increases value of a variable by 1 |
— | Decrement | Decreases value of a variable by 1 |
Here, Increment (++) and decrement (–) are unary operators, which means these work with a single operand. Rest are binary operators.
Example of C++ Arithmetic Operators
#include <iostream> using namespace std; int main() { int a, b; a = 8; b = 3; // Addition cout << "a + b = " << (a + b) << endl; // Subtraction cout << "a - b = " << (a - b) << endl; // Multiplication cout << "a * b = " << (a * b) << endl; // Division cout << "a / b = " << (a / b) << endl; // Modulus cout << "a % b = " << (a % b) << endl; // Increment cout << "++a = " << ++a << endl; //Decrement cout<< "--b = " << --b <<endl; return 0; }
Output
a – b = 5
a * b = 24
a / b = 2
a % b = 2
++a = 9
–b = 2
2. Assignment Operators in C++
To assign value to a variable, we use assignment operators. Both the operands should be of same data type.
Operator | Example | Equivalent to |
= | x = y | x = y |
+= | x += y | x = x + y |
-= | x -= y | x = x – y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
Example of C++ Assignment Operators
#include <iostream> using namespace std; int main() { int x, y; x = 8; y = 3; cout << "x = " << x << endl; cout << "y = " << y << endl; x /= y; cout << "x = " << x; return 0; }
Output
y = 3
x = 2
3. Relational Operators in C++
Relational operators are used to compare two operands. The result of comparison is either true or false. In case of true, it returns 1 and 0 when false.
Operator | Operation | Example |
== | Equal to | 5==7 returns 0 |
!= | Not equal to | 5!=7 returns 1 |
> | Greater than | 7>5 returns 1 |
< | Less than | 7<5 returns 0 |
>= | Greater than or equal to | 5>=7 returns 0 |
<= | Less than or equal to | 5<=7 returns 1 |
Example of C++ Relational Operators
#include <iostream> using namespace std; int main() { int x, y; x=5; y=9; bool result; result = (x!=y); cout<<"5!=9 is "<<result<<endl; result = (x>y); cout<<"5>9 is "<<result; return 0; }
Output
5>9 is 0
4. Logical Operators in C++
Logical operators determine the logic between operands and check if expressions are true or false.
Operator | Operation | Description |
&& | Logical AND | Returns true(1) only if both operands are true |
|| | Logical OR | Returns true(1) if atleast one of the operands is true |
! | Logical NOT | Returns true(1) if the operand is false and false(0) when the operand is true. |
Logical NOT (!) is a unary operator.
Example of C++ Logical Operators
#include <iostream> using namespace std; int main() { int x=3, y=9; bool result; result = (x>4) && (y>6); //false cout<<"(x>4) && (y>6) is "<<result<<endl; result = (x>4) || (y>6); //true cout<<"(x>4) || (y>6) is "<<result<<endl; result = !(x<4); //false cout<<"!(x<4) is "<<result; return 0; }
Output
(x>4) || (y>6) is 1
!(x<4) is 0
5. Bitwise Operators in C++
We use bitwise operators to perform bit-level operations. Values of both operands are first converted into binary before operating on them.
Operator | Operation | Description |
& | Bitwise AND | AND operation bit by bit. |
| | Bitwise OR | OR operation bit by bit. |
^ | Bitwise XOR | Exclusive OR operation bit by bit. |
~ | Bitwise One’s Complement | Converts operand into its one’s complement form. It is a unary operator. |
<< | Bitwise left shift | Shifts all bits by a specified number of bits to the left. |
>> | Bitwise right shift | Shifts all bits by a specified number of bits to the right. |
The right hand side operand of << and >> operators specifies the number of bits to be shifted.
Example of C++ Bitwise Operators
#include <iostream> using namespace std; int main() { int x=14, y=20; cout<<"x&y = "<< (x&y) <<endl; cout<<"x|y = "<< (x|y) <<endl; cout<<"x^y = "<< (x^y) <<endl; cout<<"1's Complement of x is "<< (~x) <<endl; cout<<"Left shift x by 2 bits, result = "<< (x<<2) <<endl; cout<<"Right shift y by 1 bit, result = "<< (y>>1); return 0; }
Output
x|y = 30
x^y = 26
1’s Complement of x is -15
Left shift x by 2 bits, result = 56
Right shift y by 1 bit, result = 10
6. Other Operators in C++
Some other operators in C++ are:
Operator | Description | Example |
sizeof() | Computes size of its operand in bytes | sizeof(int); //4 |
Condition ? exp1 : exp2 | It is the ternary conditional operator. If the condition is true, it returns exp1, else exp2. | (9>5) ? cout<<“true” : cout<<“false”; //true |
, (Comma) | It first evaluates the first operand followed by the second and then returns the result of the second operand. | int i = (5, 10); //i=10 |
. (dot) | Used to access members of struct and class. | obj.age=25; |
-> (arrow) | Used with pointers to access members of struct and class. | ptr->age=25; |
& (‘Address of’ Pointer operator) | Returns the memory address. | a = 100;
p = &a; //p=some memory address |
* (‘Indirection’ Pointer operator) | Pointer to a variable. | a = 100;
p = &a; v = *p; //v=100 |
(type) Cast | Converts one data type to another. | double a = 12.85467;
int b; b = (int) a; //b=12 |
Precedence of Operators in C++
In the table given below, the precedence of operators decreases from top to bottom.
Operator | Description | Associativity |
:: | Scope resolution | Left to right |
Postfix Unary
++ — () [] . -> |
Increment DecrementFunction call
Subscript Member access |
|
Prefix Unary ++ — + – ! ~ (type) * & sizeof() |
Increment DecrementUnary plus minus
Logical NOT, Bitwise complement Cast Dereference Address of/reference size of operand in bytes |
Right to left |
.* .-> | Pointer to member | Left to right |
* / %
+ – |
Arithmetic | |
<< >> | Bitwise left shift, Bitwise right shift | |
< <=
> >= == != |
Relational | |
& ^ | |
Bitwise AND
Bitwise XOR Bitwise OR |
|
&&
|| |
Logical AND Logical OR |
|
?: | Ternary Conditional | Right to left |
=
+= -= *= /= %= <<= >>= &= ^= |= |
Assignment | |
, | Comma | Left to right |
Example to illustrate operator precedence in C++
#include <iostream> using namespace std; int main() { int result1 = 5 + 10 / 3; int result2 = (5 + 10) / 3; cout<<result1<<endl; cout<<result2<<endl; result1==result2 ? cout<<"Equal" : cout<<"Unequal"; return 0; }
Output
5
Unequal
Observe that we obtained different results for both the expressions because of operator precedence.
Summary
From this article, we learnt operators in C++. In C++, operators are mainly divided into 6 categories. We covered operators of each category with examples followed by the precedence of these operators.