# Operators in C

Operators in C programming are used to perform the operations on variables. Most common operations include addition, subtraction, multiplication, division, modular division, etc.

**Types of Operators in C**

Operators | Description |
---|---|

* / % + - | Arithmetic Operators |

!= > < >= <= ==/td> | Relational Operators |

&& || ! | Logical Operators |

&, |, ^, ~, >> << | Bitwise Operators |

+=, -=, *=,= | Assignment Operators |

conditional, comma, sizeof, address, redirecton | Other Operators |

We will explore each type of operator available in C in this tutorial. So let/'s begin with the Arithmetic Operators first.

**Arithmetic Operators**

Arithmetic Operators are basically used to perform the general addition, subtraction, multiplication, division, and modular division operations. The following table includes all the Arithmetic Operators in C as follows,

Operator | Meaning of Operator |
---|---|

+ | addition or unary plus |

- | subtraction or unary minus |

* | multiplication |

/ | division |

% | remainder after division (modulo division) |

The following program illustrates how to use the arithmetic operators in C,

// Working of arithmetic operators #include int main() { int a = 9,b = 4, c; c = a+b; printf("a+b = %d ",c); c = a-b; printf("a-b = %d ",c); c = a*b; printf("a*b = %d ",c); c = a/b; printf("a/b = %d ",c); c = a%b; printf("Remainder when a divided by b = %d ",c); return 0; }

**Output**:

a+b = 13 a-b = 5 a*b = 36 a/b = 2 Remainder when a divided by b = 1

The +, -, *, / operators are used to compute the basic calculations addition, subtraction, division, and multiplication.

Modulo operator(%) is used to give the remainder in the division operation.

**Bitwise Operators in C**

There are many Bitwise operators in C as defined below:

**& (bitwise AND):-** Performs the AND Operation bit by bit. The result of AND is 1 only if both bits are 1.

**| (bitwise OR):-** Performs the OR Operation bit by bit. The result of OR is 1 any of the two bits is 1.

**^ (bitwise XOR):- **Performs the XOR Operation bit by bit. The result of XOR is 1 if the two bits are different.

**<< (left shift):-** Takes two numbers, left shifts the bits of the first operand, the second operand decides the number of places to shift.

**>> (right shift):-** Takes two numbers, right shifts the bits of the first operand, the second operand decides the number of places to shift.

**~ (bitwise NOT):-** Takes one number and inverts all bits of it.

Visit Bitwise Operators in C topic for detailed reference.

**Logical Operators in C**

An expression containing a logical operator returns either 0 or 1 depending upon whether the expression results in true or false. The following table represents different types of logical operators in C programming as follows,

Operator | Meaning | |
---|---|---|

&& | Logical AND. True only if all operands are true | |

|| | Logical OR. True only if either one operand is true | |

! | Logical NOT. True only if the operand is 0 |

**C Program to illustrate the concept of Logical Operators in C**

#include int main() { int marks = 65; if(marks > 75 && marks < 99) { printf("He is topper"); } else if(marks < 75 && marks >= 65) { printf("He cracked the exam"); } else { printf("He failed"); } return 0; }

**Output:**

He cracked the exam

## Assignment Operators in C

An assignment operator is used for assigning a value to a variable.

Operator | Example | Same as |
---|---|---|

= | a = b | a = b |

+= | a += b | a = a+b |

-= | a -= b | a = a-b |

*= | a *= b | a = a*b |

/= | a /= b | a = a/b |

%= | a %= b | a = a%b |

**C program to illustrate the concept of Assignment Operators**

#include int main() { int a; a+= 10; printf("a = %d ",a); a -= 2; printf("a = %d ",a); a *= 2; printf("a = %d ",a); a /= 2; printf("a = %d ",a); a %=2; printf("a = %d ",a); return 0; }

**Output**

a = 10 a = 8 a = 16 a = 8 a = 0

## Postfix Increment

int i = 10; printf("%d", i++); printf(“ %d", i);

## Output :-

10 11

**Here,**

**i++** is postfix operator because **++** is used after a unary operand. Unary means one operand which is **i** in this given example. **In postfix case **, value is assigned to **i** at first which is **10** and then after that whenever **i** is being used its value will be incremented by **1** when **++** is used .

## Prefix Increment

int i = 10; printf("%d", ++i); printf(“ %d", i);

## Output :-

11 11

**Here,**

++i is prefix operator because ++ is used before a unary operand. Unary means one operand which is i in this given example. In prefix case, the value is incremented by 1 at first and then from that point value of i is being changed to incremented value.

## Decrement Operator

## Postfix Decrement

int i = 10; printf("%d", i--); printf(“ %d", i);

## Output :-

10 9

**Here,**

i-- is postfix operator because -- is used after a unary operand. Unary means one operand which is i in this given example. In postfix case , value is assigned to i first which is 10 and then after that whenever i is being used its value will be decremented by 1 when -- is used.

## Prefix Decrement :-

int i = 10; printf("%d", --i); printf(“ %d", i);

## Output :-

9 9

**Here,**

--i is prefix operator because -- is used before a unary operand. Unary means one operand which is i in this given example. In prefix case , value is decremented by 1 and then from that point value of i is being changed to decremented value when -- is used .

## Example

a = 10;Outputa++ = 10 ++ = 10 a++ = 11++ = 11 a++ = 12++ = 12 a = 13 = 13 ++a = ++10 = 11 ++a = ++11 = 12 ++a = ++12 = 13 a = 13 = 13

**As discussed,**

## Remember this rule

In postfix case, the value is assigned to i at first which is 10 and then after that whenever i is being used its value will be incremented by 1 when ++ is used .

a++ will use the original value which is 10 at first and then in the second step whenever a is used its value will be incremented so in second step value will become 11 which is then incremented in third step so its value becomes 12 in the third step which is then incremented so whenever its used in fourth step its value will be incremented by 1.

In prefix case, the value is incremented by 1 at first and then from that point value of i is being changed to incremented value.

++a increments the value directly and use the incremented value afterward.

## Similarly in case of decrement operator.

## Example

a = 10; Output a-- = 10-- = 10 a-- = 9-- = 9 a-- = 8-- = 8 a = 7 = 7 --a = --10 = 9 --a = --9 = 8 --a = --8 = 7 a = 7 = 7

## Hierarchy of Operations

There are various scenarios where the compiler has to know which operation should perform first. What do you think this expression will be evaluated according to the compiler?

2 * x - 3 * y

Now,

There are two ways to solve this equation

1) (2x)-(3y) 2) 2(x-3y)

We engineers know how to solve these problems because we know multiplication is solved first then minus operation should be applied. **But how does the compiler know how to solve this?** So Hierarchy of Operations helps the compiler to understand this kind of equations.

## The following table list the operators according to priorities:-

Priority | Operators | Description |
---|---|---|

1st | */% | multiplication, division, modular division |

2nd | +- | addition, subtraction |

3rd | = | assignment |

## What this table signifies?

* will be always solved first then division (/) operator. + will be solved before - operator but * will be solved first then + operator.

## Example

a = 2*3/4+4/4

As ***** has max priority than **'/'** So it will be evaluated first. So,

6/4+4/4

Now **'/'** has max priority than **'+'** so

1 + 4/4

Now **'/'** has max priority than **'+'** so

1 + 1

Result is 2

Codzify's

**1:1 & 1:Many Mentorship Program**

Be job-ready. Learn how to crack the interviews with industry ready training program.

Learn More

## Data Structures & Algorithms

## What is Dynamic Programming and how to use it

This is a quick introduction to Dynamic Programming.

## 3 ways to check anagrams

Let's discuss the 3 ways to check anagrams and their time complexity.

## Bubble Sort Algorithm

Topics covered: 1) Basics of Bubble Sort Algorithm 2) Worst Case, Best Case complexity

## Introduction to Trees

What is a Tree and Terminologies like root, sibling, parent node, children, Leaf node, Ancestor & Descendant, Properties of Tree Data Structure, Depth of node, Height of node

## Address Calculation in 2d array

Let's discuss about the Address Calculation using row-major order & column-major order.

## Javascript

## Javascript - Postfix Vs Prefix

Let's discuss the difference between postfix and prefix with a practical example.

## Javascript Identifiers, Variables

In this session, we will discuss the concept of identifiers, variables and operators in javascript with a practical example.

## Bootstrap

## Bootstrap 4 Tutorial: Modal Popups Made Easy | Live Demo

Let's discuss the Modal Popups in Bootstrap.

## How to create a dropdown list in navbar bootstrap

In this video, we will discuss How to create a dropdown list in navbar bootstrap with a practical example.

## Navigation tabs in Bootstrap

Let's discuss about the navigation tabs in Bootstrap

## Bootstrap Buttons

Let's discuss about the button classes in bootstrap.

## Recommended tutorials

Ternary Operators in C Language

Bitwise Operators in C Language

Increment and Decrement Operators in C Language

Concept of Operator Precedence and Associativity of Operators in C Language