Operators in C Language

Operators are the foundation of any programming language. Thus the functionality of C language is incomplete without the use of operators. Operators allow us to perform different kinds of operations on operands. In C, operators in Can be categorized in following categories:

  • Arithmetic Operators (+, -, *, /, %, post-increment, pre-increment, post-decrement, pre-decrement)
  • Relational Operators (==, !=, >, <, >= & <=) Logical Operators (&&, || and !)
  • Bitwise Operators (&, |, ^, ~, >> and <<)
  • Assignment Operators (=, +=, -=, *=, etc)
  • Other Operators (conditional, comma, sizeof, address, redirecton)

Arithmetic Operators: These are used to perform arithmetic/mathematical operations on operands. The binary operators falling in this category are:

    • Addition: The ‘+’ operator adds two operands. For example, x+y.
    • Subtraction: The ‘-‘ operator subtracts two operands. For example, x-y.
    • Multiplication: The ‘*’ operator multiplies two operands. For example, x*y.
    • Division: The ‘/’ operator divides the first operand by the second. For example, x/y.
    • Modulus: The ‘%’ operator returns the remainder when first operand is divided by the second. For example, x%y.
// C program to demonstrate working of binary arithmetic operators
#include <stdio.h>
 
int main()
{
    int a = 10, b = 4, res;
 
    // printing a and b
    printf("a is %d and b is %d\n", a, b);
 
    res = a + b; // addition
    printf("a+b is %d\n", res);
 
    res = a - b; // subtraction
    printf("a-b is %d\n", res);
 
    res = a * b; // multiplication
    printf("a*b is %d\n", res);
 
    res = a / b; // division
    printf("a/b is %d\n", res);
 
    res = a % b; // modulus
    printf("a%b is %d\n", res);
 
    return 0;
}

Output:

a is 10 and b is 4
a+b is 14
a-b is 6
a*b is 40
a/b is 2
a%b is 2

C language supports a rich set of built-in operators. An operator is a symbol that tells the compiler to perform certain mathematical or logical manipulations. Operators are used in program to manipulate data and variables.

C operators can be classified into following types,

  • Arithmetic operators
  • Relation operators
  • Logical operators
  • Bitwise operators
  • Assignment operators
  • Conditional operators
  • Special operators

Arithmetic operators

C supports all the basic arithmetic operators. The following table shows all the basic arithmetic operators.

Operator Description
+ adds two operands
subtract second operands from first
* multiply two operand
/ divide numerator by denumerator
% remainder of division
++ Increment operator increases integer value by one
Decrement operator decreases integer value by one

Relation operators

The following table shows all relation operators supported by C.

Operator Description
== Check if two operand are equal
!= Check if two operand are not equal.
> Check if operand on the left is greater than operand on the right
< Check operand on the left is smaller than right operand
>= check left operand is greater than or equal to right operand
<= Check if operand on left is smaller than or equal to right operand

Logical operators

C language supports following 3 logical operators. Suppose a=1 and b=0,

Operator Description Example
&& Logical AND (a && b) is false
|| Logical OR (a || b) is true
! Logical NOT (!a) is false

Bitwise operators

Bitwise operators perform manipulations of data at bit level. These operators also perform shifting of bitsfrom right to left. Bitwise operators are not applied to float or double.

Operator Description
& Bitwise AND
| Bitwise OR
^ Bitwise exclusive OR
<< left shift
>> right shift

Now lets see truth table for bitwise &, | and ^

a b a & b a | b a ^ b
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

The bitwise shift operators shifts the bit value. The left operand specifies the value to be shifted and the right operand specifies the number of positions that the bits in the value are to be shifted. Both operands have the same precedence.

Example :

a = 0001000
b= 2
a << b = 0100000 
a >> b = 0000010 

Assignment Operators

Assignment operators supported by C language are as follows.

Operator Description Example
= assigns values from right side operands to left side operand a=b
+= adds right operand to the left operand and assign the result to left a+=b is same as a=a+b
-= subtracts right operand from the left operand and assign the result to left operand a-=b is same as a=a-b
*= mutiply left operand with the right operand and assign the result to left operand a*=b is same as a=a*b
/= divides left operand with the right operand and assign the result to left operand a/=b is same as a=a/b
%= calculate modulus using two operands and assign the result to left operand a%=b is same as a=a%b

Conditional operator

It is also known as ternary operator and used to evaluate conditional expression.

epr1 ? expr2 : expr3

If epr1 Condition is true ? Then value expr2 : Otherwise value expr3


Special operator

Operator Description Example
sizeof Returns the size of an variable sizeof(x) return size of the variable x
& Returns the address of an variable &x ; return address of the variable x
* Pointer to a variable *x ; will be pointer to a variable x