C language supports a enrich 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
Relational operators
Logical operators
Bitwise operators
Assignment operators
Conditional operators
Special operators
Arithmetic operators
C supports all the basic arithmetic operators, that is used to perform airthmatic operations. 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 |
Relational 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 Operator
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 Operator
Bitwise operators perform manipulations of data at bit level. These operators also perform shifting of bits from 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 |
= |
assigns values from right side operands to left side operand |
+= |
adds right operand to the left operand and assign the result to left |
-= |
subtracts right operand from the left operand and assign the result to left operand |
*= |
mutiply left operand with the right operand and assign the result to left operand |
/= |
divides left operand with the right operand and assign the result to left operand |
%= |
calculate modulus using two operands and assign the result to left operand |
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 |
Misc Operators ? sizeof & ternary
Besides the operators that we discussed above, there are a few other important operators including sizeof and ? : supported by the C Language.
Operator |
Description |
Example |
sizeof() |
Returns the size of a variable. |
sizeof(a), where a is integer, will return 4. |
& |
Returns the address of a variable. |
&a; returns the actual address of the variable. |
* |
Pointer to a variable. |
*a; |
? : |
Conditional Expression. |
If Condition is true ? then value X : otherwise value Y |
Operators Precedence in C
Operator precedence determines the grouping of terms in an expression and decides how an expression is evaluated. Certain operators have higher precedence than others; for example, the multiplication operator has a higher precedence than the addition operator.
For example, x = 7 + 3 * 2; here, x is assigned 13, not 20 because operator * has a higher precedence than +, so it first gets multiplied with 3*2 and then adds into 7.
Here, operators with the highest precedence appear at the top of the table, those with the lowest appear at the bottom. Within an expression, higher precedence operators will be evaluated first.
Category |
Operator |
Associativity |
Postfix |
() [] -> . ++ - - |
Left to right |
Unary |
+ - ! ~ ++ - - (type)* & sizeof |
Right to left |
Multiplicative |
* / % |
Left to right |
Additive |
+ - |
Left to right |
Shift |
<< >> |
Left to right |
Relational |
< <= > >= |
Left to right |
Equality |
== != |
Left to right |
Bitwise AND |
& |
Left to right |
Bitwise XOR |
^ |
Left to right |
Bitwise OR |
| |
Left to right |
Logical AND |
&& |
Left to right |
Logical OR |
|| |
Left to right |
Conditional |
?: |
Right to left |
Assignment |
= += -= *= /= %=>>= <<= &= ^= |= |
Right to left |
Comma |
, |
Left to right |
techtooinfo.com