What are Operators in 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:


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:

  • prefix: They can be used as a prefix to the operands, for example- ++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.
  • postfix: They can be used as a postfix to the operands. for example- 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:

  • sizeof : This operator returns the size of the operand. Eg: 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.


Recommended Books


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!! ?

Recommended -

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
KANAGATHARA RAMESH
KANAGATHARA RAMESH
1 year ago

what is the output for
if(0)//for this statement

1
0
Would love your thoughts, please comment.x
()
x
Index