# C Programming Operators

Operators are the symbol which operates on value or a variable. For example: `+` is a operator to perform addition.

C programming language has wide range of operators to perform various operations. For better understanding of operators, these operators can be classified as:

Operators in C programming |
---|

Arithmetic Operators |

Increment and Decrement Operators |

Assignment Operators |

Relational Operators |

Logical Operators |

Conditional Operators |

Bitwise Operators |

Special Operators |

### Arithmetic Operators

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

+ | addition or unary plus |

- | subtraction or unary minus |

* | multiplication |

/ | division |

% | remainder after division( modulo division) |

Example of working of arithmetic operators

```
/* Program to demonstrate the working of arithmetic operators in C. */
#include <stdio.h>
int main(){
int a=9,b=4,c;
c=a+b;
printf("a+b=%d\n",c);
c=a-b;
printf("a-b=%d\n",c);
c=a*b;
printf("a*b=%d\n",c);
c=a/b;
printf("a/b=%d\n",c);
c=a%b;
printf("Remainder when a divided by b=%d\n",c);
return 0;
}
```

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

**Explanation**

Here, the operators +, - and * performed normally as you expected. In normal calculation, `9/4`

equals to 2.25. But, the output is 2 in this program. It is because, a and b are both integers. So, the output is also integer and the compiler neglects the term after decimal point and shows answer 2 instead of 2.25. And, finally `a%b`

is 1,i.e. ,when `a=9`

is divided by `b=4`

, remainder is 1.

Suppose a=5.0, b=2.0, c=5 and d=2 In C programming, a/b=2.5 a/d=2.5 c/b=2.5 c/d=2

**Note:** % operator can only be used with integers.

### Increment and decrement operators

In C, `++`

and `--`

are called increment and decrement operators respectively. Both of these operators are unary operators, i.e, used on single operand. `++`

adds 1 to operand and `--`

subtracts 1 to operand respectively. For example:

Let a=5 and b=10 a++; //a becomes 6 a--; //a becomes 5 ++a; //a becomes 6 --a; //a becomes 5

**Difference between ++ and -- operator as postfix and prefix**

When `i++`

is used as prefix(like: `++var`

), `++var`

will increment the value of `var` and then return it but, if `++`

is used as postfix(like: var++), operator will return the value of operand first and then only increment it. This can be demonstrated by an example:

```
#include <stdio.h>
int main(){
int c=2,d=2;
printf("%d\n",c++); //this statement displays 2 then, only c incremented by 1 to 3.
printf("%d",++c); //this statement increments 1 to c then, only c is displayed.
return 0;
}
```

**Output**

2 4

### Assignment Operators

The most common assignment operator is `=`

. This operator assigns the value in right side to the left side. For example:

var=5 //5 is assigned to var a=c; //value of c is assigned to a 5=c; // Error! 5 is a constant.

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 |

### Relational Operator

Relational operators checks relationship between two operands. If the relation is true, it returns value 1 and if the relation is false, it returns value 0. For example:

a>b

Here, `>`

is a relational operator. If `a` is greater than `b`, `a>b` returns 1 if not then, it returns 0.

Relational operators are used in decision making and loops in C programming.

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

== | Equal to | 5==3 returns false (0) |

> | Greater than | 5>3 returns true (1) |

< | Less than | 5<3 returns false (0) |

!= | Not equal to | 5!=3 returns true(1) |

>= | Greater than or equal to | 5>=3 returns true (1) |

<= | Less than or equal to | 5<=3 return false (0) |

### Logical Operators

Logical operators are used to combine expressions containing relation operators. In C, there are 3 logical operators:

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

&& | Logial AND | If c=5 and d=2 then,((c==5) && (d>5)) returns false. |

|| | Logical OR | If c=5 and d=2 then, ((c==5) || (d>5)) returns true. |

! | Logical NOT | If c=5 then, !(c==5) returns false. |

**Explanation**

For expression, `((c==5) && (d>5))` to be true, both `c==5` and `d>5` should be true but, (d>5) is false in the given example. So, the expression is false. For expression `((c==5) || (d>5))`

to be true, either the expression should be true. Since, `(c==5)`

is true. So, the expression is true. Since, expression `(c==5)`

is true, `!(c==5)`

is false.

### Conditional Operator

Conditional operator takes three operands and consists of two symbols ? and : . Conditional operators are used for decision making in C. For example:

c=(c>0)?10:-10;

If `c` is greater than 0, value of `c` will be 10 but, if `c` is less than 0, value of `c` will be -10.

### Bitwise Operators

A bitwise operator works on each bit of data. Bitwise operators are used in bit level programming.

Operators | Meaning of operators |
---|---|

& | Bitwise AND |

| | Bitwise OR |

^ | Bitwise exclusive OR |

~ | Bitwise complement |

<< | Shift left |

>> | Shift right |

Bitwise operator is advance topic in programming . Learn more about bitwise operator in C programming.

### Other Operators

#### Comma Operator

Comma operators are used to link related expressions together. For example:

int a,c=5,d;

#### The sizeof operator

It is a unary operator which is used in finding the size of data type, constant, arrays, structure etc. For example:

```
#include <stdio.h>
int main(){
int a;
float b;
double c;
char d;
printf("Size of int=%d bytes\n",sizeof(a));
printf("Size of float=%d bytes\n",sizeof(b));
printf("Size of double=%d bytes\n",sizeof(c));
printf("Size of char=%d byte\n",sizeof(d));
return 0;
}
```

**Output**

Size of int=4 bytes Size of float=4 bytes Size of double=8 bytes Size of char=1 byte

### Conditional operators (?:)

Conditional operators are used in decision making in C programming, i.e, executes different statements according to test condition whether it is either true or false.

#### Syntax of conditional operators

conditional_expression?expression1:expression2

If the test condition is true, `expression1`

is returned and if false `expression2`

is returned.

#### Example of conditional operator

```
#include <stdio.h>
int main(){
char feb;
int days;
printf("Enter l if the year is leap year otherwise enter 0: ");
scanf("%c",&feb);
days=(feb=='l')?29:28;
/*If test condition (feb=='l') is true, days will be equal to 29. */
/*If test condition (feb=='l') is false, days will be equal to 28. */
printf("Number of days in February = %d",days);
return 0;
}
```

**Output**

Enter l if the year is leap year otherwise enter n: l Number of days in February = 29

Other operators such as &(reference operator), *(dereference operator) and ->(member selection) operator will be discussed in pointer chapter.