# Operators: C programming language

|**Operators** are specific symbols that give instructions to the compiler to operate on the data or operands. **Operands** are the entities on which operation is being performed.

Operators operate on the operands to produce a result. For example: **c=a+b**; where a=5, b=10. So, here ‘+’ is an operator which operates on the operands, i.e., ‘a’ and ‘b’, and results in the output c(=15). C Programming Language offers us the following operators to work with:

**Arithmetic Operators****Logical Operators****Increment Decrement Operators****Conditional Operators or ternary operators****Relational Operators****Assignment Operators****Bitwise Operators****Other Operators**

Let’s go through all these operators and their use in detail:

Table of Contents

## 1. Arithmetic Operators

**Arithmetic operators** are used to perform arithmetic operations in C like addition, subtraction, multiplication, etc. It takes two or more numerical values(also in the form of variables) and a single numerical result. Here are the arithmetic operators that are offered by the C Programming Language:

**+**: Used for the addition of operands or string concatenation. It gives us the sum of the operands.**–**: Used for Subtraction of operands. It gives us the difference of the operands.*****: Used for Multiplication of operands. It gives us the product of the operands**/**: Used for Dividing the operands. Gives us the quotient.**%**: Used for getting the remainder after dividing the operands.

The following program illustrates the use of arithmetic operators:

#include <stdio.h> #include <stdlib.h> int main() { int a = 16, b = 5, c = 0; c = a + b; printf("the sum is: %d\n", c); c = a - b; printf("the difference is: %d\n", c); c = a * b; printf("the product is: %d\n", c); c = a / b; printf("the quotient is: %d\n", c); c = a % b; printf("the remainder is: %d\n", c); return 0; }

**Output:-**
the sum is: 21
the difference is: 11
the product is: 80
the quotient is: 3
the remainder is: 1

Here, the arithmetic operators operate on the given integer values and produce the output accordingly.

## 2. Logical Operators

**Logical Operators** results in either **0** or **1**. **0** stands for *false* and 1 stand for *true*. Here are the logical operators offered by the C Programming Language:

**!**: The**Logical NOT**operator. Also known as the*negation*operator. It negates the value of the operand or reverses its logical state i.e. True to False and False to True.**||**: The**Logical OR**operator. It results in*true*(or 1) if both the operands or any one of the operand is*true*(value is non-zero) and results in*false*(or 0) if both the operands are*false*.**&&**: The**Logical AND**operator. It results in*true*(or 1) if both the operands are*true*(value is non-zero) otherwise*false*(or 0).

The following program illustrates the use of **logical operators**:

#include <stdio.h> #include <stdlib.h> int main() { int a = 16, b = 5, c = 0, d; d = a && c; printf("a&&c results in: %d\n", d); d = a && b; printf("a&&b results in: %d\n", d); d = a || c; printf("a||c results in: %d\n", d); d = !b; printf("!b results in: %d\n", d); return 0; }

**Output:-**
a&&c results in: 0
a&&b results in: 1
a||c results in: 1
!b results in: 0

Here the logical operators operate on the given values(operands) to produce the given output accordingly.

## 3. Increment and Decrement Operators

The **increment operator** **‘++’** is used to increment the value of the operand by** 1** at a time. Similarly, the **decrement operator ‘–‘** is used to decrement the value of the operand by **1** at a time. They can be used in two ways:

: They can be used as a prefix to the operands, for example-**prefix****++a**,**–x**; This means*‘increase/decrease then use’*, i.e., first increase/decrease the value of the operand by 1 accordingly and then use it’s incremented/decremented value.: They can be used as a postfix to the operands. for example-**postfix****a++**,**x–**; This means*‘use and increase/decrease’*, i.e., first use the value of the operand and then increment/decrement it by 1 accordingly.

The following program illustrates the use of **increment/decrement operators**:

#include <stdio.h> int main() { int a = 5, b = 16; printf("postfix increment: %d\n", a++); printf("prefix increment: %d\n", ++a); printf("prefix decrement: %d\n", --b); printf("postfix decrement: %d\n", b--); return 0; }

**Output:-**
postfix increment: 5
prefix increment: 7
prefix decrement: 15
postfix decrement: 15

In the first “printf()” we see that **a++** results in **5**. This is because the value of a is first being printed and then it is incremented which makes **a=6**.

In the next line **++a** results in **7** because the value of a is incremented first which makes **a=7** and then that value is printed.

Similarly, in the next line, we see that** –b** results in** 15** because the value of b is decremented first(now **b=15**) and then it is printed.

And finally, in the last line, the value of b is printed first(i.e, **b=15**) and then decremented to **b=14**.

## 4. Conditional Operator or Ternary Operator

A **Conditional Operator** works on three operands. It uses the symbols ?: . Here is the syntax of using a ternary operator:

**condition ? expression1 : expression2;**

Here, the* condition *is the conditional statement that results in *true *or* false.* Accordingly, *expression1* is the result if the *condition* is *true* and *expression2* is the result if the *condition* is *false*.

We can also have a nested ternary operator. The syntax is as follows:

**condition1 ? (condition2 ? expression1 : expression2) : expression3;**

The following program illustrates the use of **conditional operators**:

#include <stdio.h> int main() { int a = 17, b = 16, c = 30, d; d = (a > b ? a : b); // simple ternary operator printf("the bigger number is: %d\n", d); d = (a > b ? (a > c ? a : c) : (b > c ? b : c)); // nested ternary operator printf("the largest number is: %d", d); return 0; }

**Output:-**

the bigger number is: 17 the largest number is: 30

Here the conditional operators operate on the given values(operands) to produce the given output accordingly.

## 5. Relational Operators

A** Relational Operator** checks the relationship between two operands and returns 1(for *true*) or 0(for *false*). Here are the Relational Operators offered by the C Programming Language:

**==**: Checks if the two operands are*equal*or not. Returns*true*if the operands are equal and*false*if they are not equal.**<=**: Returns*true*if the left operand is*less than or equal*to the right operand.**>=**: Returns*true*if the left operand is*greater than or equal*to the right operand.**!=**: Returns*true*if the two operands are*not equal*.**<**: Returns*true*if the left operand is*less than*the right operand.**>**: Returns*true*if the left operand is*greater than*the right operand.

## 6. Assignment Operator

An **Assignment Operator** assigns a value to the variable. Here are the Assignment Operators offered by the C Programming Language:

**=**: Assigns the value of the right operand to the left operand. Eg:**a=b; a=10;****+=**: Adds up the left operand and the right operand and assigns that value to the left operand. Eg:**a+=b;**which is**a=a+b;****-=**: Subtracts the right operand from the left operand and assigns that value to the left operand. Eg:**a-=b;**which is**a=a-b;*****=**: Multiplies the left and the right operand and stores the value in the left operand. Eg:**a*=b;**which is**a=a*b;****/=**: Divides the left operand by the right operand and stores the value in the left operand. Eg:**a/=b;**which is**a=a/b;**

## 7. Bitwise Operator

A **Bitwise Operator** performs mathematical operations at bit level. Or in simple words, it performs the operation bit by bit which makes the computation a faster process. Here are the **Bitwise Operators** offered by the C Programming Language:

**&**: It is the**Bitwise AND**Operator. ANDs the two operands and returns the value.**|**: It is the**Bitwise OR**Operator. ORs the two operands and returns the value.**~**: It is the**Bitwise Complement**operator. Complements the operand and returns the value.**^**: It is the**Bitwise Exclusive OR**(XOR) Operator. Returns the XOR of the two operands.**>>**:**Bitwise Right shift**. Right shifts the operand by the given value. Eg:**a>>2;**which means it right shifts the value of the variable by 2.**<<**:**Bitwise Left Shift**. Left shifts the operand by the given value. Eg:**a<<3;**which means it left shifts the value of the variable by 3.

The following program illustrates the use of **Bitwise**** operators**:

#include <stdio.h> #include <stdlib.h> int main() { int a = 5, b = 16, c; c = a & b; printf("The Bitwise AND: %d\n", c); c = a | b; printf("The Bitwise OR: %d\n", c); c = a ^ b; printf("The Bitwise Exclusive OR: %d\n", c); c = ~b; printf("The Bitwise Complement: %d\n", c); c = b >> 2; printf("The Bitwise right shift: %d\n", c); c = a << 3; printf("The Bitwise left shift: %d\n", c); return 0; }

**Output:-**
The Bitwise AND: 0
The Bitwise OR: 21
The Bitwise Exclusive OR: 21
The Bitwise Complement: -17
The Bitwise right shift: 4
The Bitwise left shift: 40

Here the bitwise operators operate on the given values(operands) to produce the given output accordingly.

## 8. Miscellaneous Operators

Some of the other operators that C Programming Language offers are:

: This operator returns the size of the operand. Eg:**sizeof****sizeof(a);**returns the size in bytes of the variable.**&**: This operator gives the address of the operand. Eg:**&a;**returns the address in memory of the variable.

**Helpful Links**

Please follow **C Programming tutorials** or the **menu in the sidebar** for the complete tutorial series.

Also for the example C programs please refer to **C Programming Examples**.

All examples are hosted on **Github**.

**An investment in knowledge always pays the best interest. I hope you like the tutorial. Do come back for more because learning paves way for a better understanding**

**Do not forget to share and Subscribe.**

* Happy coding!! *ðŸ˜Š