# 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

How was the tutorial? Nice. Right?

## Deep Concept videos to crack the highly-piad interviews.

Chekout out our Youtube Channel to get detailed video content on important topics in interviews.

## What is your Interview Score?

Test your skillset with the curated questions created by experts around the globe.

Book a free test slot. Now !.

It usually takes 30 mins for an online test and this test will be MCQ based. Get detailed analytics based on your test and recommedations with personalised roadmaps.

Book a test slot. Now!## 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