What are the different operators available in C ?
In the C programming language, operators are special symbols that perform specific operations on one, two, or three operands, and then return a result. Operators are used to manipulate variables and constants, and they are essential for building expressions and controlling the flow of a program. Here + is acting as a operator and X and Y as operands.

C has a wide range of operators, which can be classified into the following categories:
- Arithmetic Operators
- Assignment Operators
- Relational Operators
- Logical Operators
- Conditional/ Ternary Operator
- Bitwise Operators
Arithmetic Operators
These operators perform basic arithmetic operations, such as addition, subtraction, multiplication, and division. For example:
| Operator | Description | Example |
| + | Adds two operands. | A + B = 30 |
| − | Subtracts second operand from the first. | A − B = -10 |
| * | Multiplies both operands. | A * B = 200 |
| / | Divides numerator by de-numerator. | B / A = 2 |
| % | Modulus Operator and remainder of after an integer division. | B % A = 0 |
| ++ | Increment operator increases the integer value by one. | A++ = 11 |
| -- | Decrement operator decreases the integer value by one. | A-- = 9 |
For example:
int a = 10;
int b = 20;
int c = a + b; // c will be 30
int d = a * b; // d will be 200
Assignment Operators
These operators assign a value to a variable. For example:Assume A = 5 and B= 15
| Operator | Description | Example |
| = | Simple assignment operator. Assigns values from right side operands to left side operand | C = A + B will assign the value of A + B to C |
| += | Add AND assignment operator. It adds the right operand to the left operand and assign the result to the left operand. | C += A is equivalent to C = C + A |
| -= | Subtract AND assignment operator. It subtracts the right operand from the left operand and assigns the result to the left operand. | C -= A is equivalent to C = C - A |
| *= | Multiply AND assignment operator. It multiplies the right operand with the left operand and assigns the result to the left operand. | C *= A is equivalent to C = C * A |
| /= | Divide AND assignment operator. It divides the left operand with the right operand and assigns the result to the left operand. | C /= A is equivalent to C = C / A |
| %= | Modulus AND assignment operator. It takes modulus using two operands and assigns the result to the left operand. | C %= A is equivalent to C = C % A |
| <<= | Left shift AND assignment operator. | C <<= 2 is same as C = C << 2 |
| >>= | Right shift AND assignment operator. | C >>= 2 is same as C = C >> 2 |
| &= | Bitwise AND assignment operator. | C &= 2 is same as C = C & 2 |
| ^= | Bitwise exclusive OR and assignment operator. | C ^= 2 is same as C = C ^ 2 |
| |= | Bitwise inclusive OR and assignment operator. | C |= 2 is same as C = C | 2 |
For example:
int a = 10;
int b = 20;
a = b; // a will be 20
Relational Operators
These operators compare two operands and return a boolean value (true or false) based on the result of the comparison. For example: Assume A = 5 and B= 15
| Operator | Description | Example |
| == | Checks if the values of two operands are equal or not. If yes, then the condition becomes true. | (A == B) is not true. |
| != | Checks if the values of two operands are equal or not. If the values are not equal, then the condition becomes true. | (A != B) is true. |
| > | Checks if the value of left operand is greater than the value of right operand. If yes, then the condition becomes true. | (A > B) is not true. |
| < | Checks if the value of left operand is less than the value of right operand. If yes, then the condition becomes true. | (A < B) is true. |
| >= | Checks if the value of left operand is greater than or equal to the value of right operand. If yes, then the condition becomes true. | (A >= B) is not true. |
| <= | Checks if the value of left operand is less than or equal to the value of right operand. If yes, then the condition becomes true. | (A <= B) is true. |
For example:
int a = 10;
int b = 20;
if (a > b)
{
printf("a is greater than b");
}
else
{
printf("a is not greater than b");
}
Logical Operators
These operators perform logical operations, such as AND, OR, and NOT, on two boolean operands. For example: A=1 and B =0
| Operator | Description | Example |
| && | Called Logical AND operator. If both the operands are non-zero, then the condition becomes true. | (A && B) is false. |
| || | Called Logical OR Operator. If any of the two operands is non-zero, then the condition becomes true. | (A || B) is true. |
| ! | Called Logical NOT Operator. It is used to reverse the logical state of its operand. If a condition is true, then Logical NOT operator will make it false. | !(A && B) is true. |
For example:
int a = 10;
int b = 20;
int c = 30;
if (a > b && a < c)
{
printf("a is greater than b and less than c
");
}
else
{
printf("a is not in the range of b and c
");
}
Conditional / Ternary Operator
This operator is also known as the ternary operator, and it takes three operands. It evaluates a condition and returns one of the two operands based on the result of the evaluation. For example:

For Example:
int a = 10;
int b = 20;
int min = (a < b) ? a : b; // min will be 10
Bitwise Operators
bitwise operators are special operators that perform bit-level operations on integer operands. These operators are used to manipulate individual bits in a value stored in an integer variable.
Here is a list of bitwise operators in C:
&(bitwise AND): Performs a bit-level AND operation on two operands.|(bitwise OR): Performs a bit-level OR operation on two operands.^(bitwise XOR): Performs a bit-level XOR operation on two operands.~(bitwise NOT): Performs a bit-level NOT operation on a single operand.<<(left shift): Shifts the bits of a number to the left by a specified number of positions.>>(right shift): Shifts the bits of a number to the right by a specified number of positions.
The truth tables for &, |, and ^ is as follows −
| a | b | a&b | a | b | a ^ b |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Assume a = 60 and b = 13 in binary format, they will be as follows −
a = 0011 1100
b = 0000 1101
Result after Bitwise Operations
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Differentiate between Binary and Unary Operators
Unary operators: These operators operate on a single operand. For example:
int a = 10;
int b = -a; // b will be -10
int c = ++a; // c will be 11, and a will be 11
int d = --a; // d will be 10, and a will be 10
Binary operators: These operators operate on two operands. For example:
int a = 10;
int b = 20;
int c = a + b; // c will be 30
int d = a * b; // d will be 200
Operator Precedence in C
In C, operator precedence determines the order in which operations are performed in an expression. Operators with higher precedence are evaluated before operators with lower precedence. For example, in the expression a + b * c, the multiplication operator (*) has higher precedence than the addition operator (+), so b * c is evaluated first, and then the result is added to a.
Operator Associativity in C
Operator associativity determines the order in which operations of the same precedence are performed in an expression. In C, the associativity of an operator is either left-to-right or right-to-left.
Left-to-right associativity means that operations are performed from left to right. For example, in the expression a - b - c, the subtraction operator (-) has left-to-right associativity, so the expression is evaluated as (a - b) - c.
Right-to-left associativity means that operations are performed from right to left. For example, the assignment operator (=) has right-to-left associativity, so the expression a = b = c is evaluated as a = (b = c).
Here is a list of the operators in C, ordered by precedence, with the highest precedence at the top:
| 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 |