Operators and Expression
Tags: beginners, programming, cpp, tutorial
Published: 2023-04-29 10:22:01

## Arithmetic Operators

Arithmetic Operators in C++ are used to perform arithmetic or mathematical operations on the operands. For example, ‘+’ is used for addition, ‘–‘ is used for subtraction,  ‘*’ is used for multiplication, etc. In simple terms, arithmetic operators are used to perform arithmetic operations on variables and data; they follow the same relationship between an operator and an operand.

```
// C++ program to execute all 5
// arithmetic function

#include <iostream>
using namespace std;

int main()
{
	int a, b;
	a = 10;
	b = 3;

	// printing the sum of a and b
	cout<< "a + b= " << (a + b) << endl;

	// printing the difference of a and b
	cout << "a - b = " << (a - b) << endl;

	// printing the product of a and b
	cout << "a * b = " << (a * b) << endl;

	// printing the division of a by b
	cout << "a / b = " << (a / b) << endl;

	// printing the modulo of a by b
	cout << "a % b = " << (a % b) << endl;

	return 0;
}


```
**Output:** 
`a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1`

## Assignment Operators

Assignment operators are used to assigning value to a variable.
Different types of assignment operators are shown below:

- “=”: This is the simplest assignment operator. This operator is used to assign the value on the right to the variable on the left.

- “+=”: This operator is combination of ‘+’ and ‘=’ operators. This operator first adds the current value of the variable on left to the value on the right and then assigns the result to the variable on the left.

- “-=”This operator is combination of ‘-‘ and ‘=’ operators. This operator first subtracts the current value of the variable on left from the value on the right and then assigns the result to the variable on the left.

- “*=”This operator is combination of ‘*’ and ‘=’ operators. This operator first multiplies the current value of the variable on left to the value on the right and then assigns the result to the variable on the left.

- “/=”This operator is combination of ‘/’ and ‘=’ operators. This operator first divides the current value of the variable on left by the value on the right and then assigns the result to the variable on the left.

**Example:** 

```
#include <iostream>
using namespace std;
  
int main() 
{ 
  
    // Assigning value 10 to a 
    // using "=" operator 
    int a = 10; 
    cout << "Value of a is "<<a<<"\n"; 
  
    // Assigning value by adding 10 to a 
    // using "+=" operator 
    a += 10; 
    cout << "Value of a is "<<a<<"\n"; 
  
    // Assigning value by subtracting 10 from a 
    // using "-=" operator 
    a -= 10; 
    cout << "Value of a is "<<a<<"\n"; 
  
    // Assigning value by multiplying 10 to a 
    // using "*=" operator 
    a *= 10; 
    cout << "Value of a is "<<a<<"\n"; 
  
    // Assigning value by dividing 10 from a 
    // using "/=" operator 
    a /= 10; 
    cout << "Value of a is "<<a<<"\n"; 
  
    return 0; 
}
```
**Output:**
`Value of a is 10
Value of a is 20
Value of a is 10
Value of a is 100
Value of a is 10`

## Increment and Decrement
The increment operator ++ adds 1 to its operand, and the decrement operator -- subtracts 1 from its operand. So, x = x+1; is the same as x++; And similarly, x = x-1; is the same as x--.

**Example:**

```
int a = 10;
int b = 3;

cout<<"Increment Decrement Operators" <<endl;
++a;
++b;

cout << "A " << a << endl;
cout << "B " << b << endl;

int x = 10;
int y = x++;
cout <<"X , Y "<<x<<","<<y <<endl;
int z = ++x;
cout <<"X, Z " << x <<", "<<z <<endl;
```

**Output:**
`A 11
B 2
X , Y 11,10
X, Z 12,12`

### Relational Operators
A relational operator is used to check the relationship between two operands. For example,
**Example:**
```
int a = 10;
int b = 3;
cout << "Relational Operators" <<endl;
cout << (a>b) <<endl; 
```
**Output:**
`1`

Here, > is a relational operator. It checks if a is greater than b or not.

If the relation is true, it returns 1 whereas if the relation is false, it returns 0.

The following table summarizes the relational operators used in C++.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3it0h6xq19v8phyvprc8.png)

## Logical Operators

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xg2ux2hp1nv0fss9m7mj.png)

**Truth Table of && Operator**
Let a and b be two operands. 0 represents false while 1 represents true. Then,
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zeui7kpilkdorevja3c0.png)

**Example:**

// C++ program demonstrating && operator truth table

```
#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 9;
    // true && false = false
    cout << ((a == 5) && (a > b)) << endl;

    // true && true = true
    cout << ((a == 5) && (a < b)) << endl;

    return 0;
}
```
**Output:**
`0
1`

**OR Operator**
**Truth Table of || Operator**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpeb5kbfhz21lsv3xnj9.png)

**Example:**
// C++ program demonstrating || operator truth table

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 9;
  
    // false && false = false
    cout << ((a == 0) || (a > b)) << endl;
  
    // false && true = true
    cout << ((a == 0) || (a < b)) << endl;

    // true && false = true
    cout << ((a == 5) || (a > b)) << endl;

    // true && true = true
    cout << ((a == 5) || (a < b)) << endl;

    return 0;
}

```
**Output:**
`0
1
1
1`

**NOT Operator !**
Reverse the result, returns false if the result is true.

**Example:**

```
// C++ program demonstrating ! operator truth table
#include <iostream>
using namespace std;

int main() {
    int a = 5;
  
    // !false = true
    cout << !(a == 0) << endl;

    // !true = false
    cout << !(a == 5) << endl;

    return 0;
}
```
**Output:**
`1
0`

## Bitwise Operators

**Binary And &**
It takes two numbers as operands and does AND on every bit of two numbers. The result of AND is 1 only if both bits are 1.  
_Rules:_
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1

**Binary OR |**
It takes two numbers as operands and does OR on every bit of two numbers. The result of OR is 1 if any of the two bits is 1.
_Rules:_
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
1 | 1 = 1

**Binary XOR ^ (Exclusive OR)**
It takes two numbers as operands and does XOR on every bit of two numbers. The result of XOR is 1 if the two bits are different.
_Rules:_
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

**Binary Not ~**
It takes one number and inverts all bits of it.
~0 = 1
~1 = 0 

**Binary Left Shift**It takes two numbers, left shifts the bits of the first operand, the second operand decides the number of places to shift.