Operators are special symbols that do some predefined task on the operands.
They are used to performing operations like arithmetic, logical, etc.
There are following three types of operators in C language.
- Unary Operators
- Binary Operators
- Ternary Operators
Unary Operators are the operators which require single operand to perform any action.
Examples of unary operator
- sizeof: return the size of an operand in bytes.
123int i, j;i = sizeof(int); //return 4 bytesj = sizeof(i); //return 4 bytes
- increment operator (++): This operator adds 1 to its operand.
12int num = 10;num++; //output: 11 (which is equivalent to num = num + 1)
increment operator is divided into two types
- post-increment operator –
12345678int a = 10;printf("a=%d",a++);printf("a=%d",a);/*output:a = 10;a = 11;*/
In this statement first the value of ‘a’ will be printed on screen and then the value of ‘a’ incremented by 1.
- pre-increment operator –
12345678int a = 10;printf("a=%d",++a);printf("a=%d",a);/*output:a = 11;a = 11;*/
In this statement first the value of ‘a’ will be incremented by 1 and then the incremented value will be printed on screen.
- post-increment operator –
- decrement operator (–): This operator subtracts 1 from its operand.
123int num = 10;num--; //output: 9//which is equivalent to num = num - 1;
decrement operator is divided into two types
- post-decrement operator –
12345678int a = 10;printf("a=%d",a--);printf("a=%d",a);/*output:a = 10;a = 9;*/
In this statement first the value of ‘a’ will be printed to screen and then the value of ‘a’ decremented by 1.
- pre-decrement operator –
12345678int a = 10;printf("a=%d",--a);printf("a=%d",a);/*output:a = 9;a = 9;*/
In this statement first the value of ‘a’ will be decremented by 1 and then the decremented value will be printed on the screen.
- post-decrement operator –
- unary minus operator: unary minus negate the value.
12int a = 10;int b = -(a); //output: b = -10
Binary operators are the operators which require two operands to perform any action.
C offers different types of binary operators. they are given as follows
- Arithmetic Operators
- Logical Operators
- Relational Operators
- Bitwise Operators
- Assignment Operators
- Special Operators
These operators are used to perform arithmetic/mathematical operations.
Below table describes all arithmetic operators.
Assume a = 20 and b = 10.
|+||Addition||Adds two operands||a + b = 30|
|–||Subtraction||Subtracts two operands||a – b = 10|
|*||Multiplication||Multiplies two operands||a * b = 200|
|/||Division||Divides first operand by second||a / b = 2|
|%||Modulus||Returns the remainder of division||a % b = 0|
Relational operators are used to compare two values.
The output of relational operators is boolean values i.e. true or false.
Following table describes all relational operators supported by C language
(assume a=5 and b=6)
|= =||Is equal to||Checks whether the two operands are equal or not. If so, it returns true. Otherwise, it returns false.||a = = b||false|
|!=||Is not equal to||Checks whether the two operands are equal or not. If so, it returns true. Otherwise, it returns false.||a ! = b||true|
|>||Greater than||Checks whether the first operand is greater than the second operand. If so, it returns true. Otherwise it returns false||a > b||false|
|<||Less than||Checks whether the first operand is lesser than the second operand. If so, it returns true. Otherwise, it returns false.||a < b||true|
|>=||Greater than or equal to||Checks whether the first operand is greater than or equal to the second operand. If so, it returns true. Otherwise, it returns false.||a > = b||false|
|< =||Less than or equal to||Checks whether the first operand is lesser than or equal to the second operand. If so, it returns true. Otherwise, it returns false.||a < = b||true|
This operator is used to test more than one condition.
C supports 3 logical operators.
Following table describes all logical operators with example
(assume x = 5 and y = 10)
|&&||logical AND||It returns true when both conditions are true||(x>5)&&(y<5)||false|
|||||logical OR||It returns true when at-least one of the condition is true||(x>=5)||(y>=10)||true|
|!||logical NOT||It is used to reverse state of its operand. If a condition is true, then Logical NOT operator will make it false.||!((x>5)&&(y<5))||true|
In C, there are 6 bitwise operators.
Consider a = 10 and b = 2 then their binary conversion is
a = 1010
b = 0010
Following is the list of bitwise operators.
|&||Bitwise AND||The result of a&b is 1 only if both bits are 1.||a & b (1010 & 0010)||2|
||||Bitwise OR||The result of OR is 1 any of the two bits is 1||a | b||10|
|^||Bitwise XOR||The result of XOR is 1 if the two bits are different.||a ^ b||8|
|>>||Binary Right Shift||The left operands value is moved right by the number of bits specified by the right operand.||a >> 2||2|
|<<||Binary Left Shift||The left operands value is moved left by the number of bits specified by left operand||a << 2||40|
|~||Binary One’s Complement||Inverts all bits.||~ a||5|
It is the value assigning operator. After evaluating the expression on the right-hand side, it assigns the value to the variable on the left-hand side.
Following is list of assignment operators (let A = 10)
|=||Assignment operator||marks = 10|
|+=||Increment, then assign||A += 2 (i.e. A = A + 2)||A = 12|
|– =||Decrement, then assign||A -= 2 (i.e. A = A – 2)||A = 8|
|* =||Multiply, then assign||A *= 2 (i.e. A = A * 2)||A = 20|
|/=||Divide, then assign||A /= 2 (i.e. A = A / 2)||A = 5|
|%=||Modulus, then assigns||A %= 2 (i.e. A = A % 2)||A = 0|
|<<=||Left shift and assigns||A <<= 2 (i.e. A = A << 2)||40|
|>>=||Right shift and assigns||A >>= 2 (i.e. A = A >> 2)||2|
|&=||Bitwise AND assigns||A &= 2 (i.e. A = A & 2)||2|
|^=||Bitwise exclusive OR and assigns||A ^= 2 (i.e. A = A ^ 2)||8|
||=||Bitwise inclusive OR and assigns||A |= 2 (i.e. A = A | 2)||10|
There are two special operators in C language given in following table
|&||It returns the address of a variable||&a|
|*||It is used as pointer to a variable||*a|
Ternary or conditional Operator ( ? : )
- There is one ternary operator supported by C language
- The ternary operator is also called as “Conditional Operator”.
- Syntax: Condition ? expression1 : expression2
If condition is true expression1 gets executed else expression2.
- A ternary operator is a short form of if-else.
int a = 10;
printf("%d\n",(a == 1)? 20 :30);
printf("%d",(a == 10)? 20 :30);
- Ternary operator can be nested as following:
Condition ? expression1(condition1 ? exp 1 :exp 2) : expression2 (condition2 ? exp 1 :exp 2)
- For example:
int big, a, b, c ;
big = ( a > b ? ( a > c ? 3: 4 ) : ( b > c ? 6: 8 ) ) ;