In the C program, we use operators for performing a specific task. This task can be a mathematical or arithmetic task (like calculating the Interest), comparison of values, assignment, logical manipulations etc. in other words operators are a combination of symbols that we put in a C expression (a combination of operands and operators is called an expression) between operands to get a desired result. An operand can be a variable, a constant or even another expression. For example consider the statement below:
A + 60 = B
Where A and B are variables (operands), 60 is a constant (operand) and the symbol "+" and "=" are operators. The whole statement together is an expression which tells the compiler to add 60 to the value of A and then assign the result to the variable B. in the C programming language mainly eight operators exist which are:
- Arithmetic
- Relational
- Assignment
- Logical
- Increment/Decrement
- Conditional
- Bitwise
- Special
For now, we are going to talk about the first 6 operators and we leave the last two (Bitwise and Special) for their corresponding chapter.
Arithmetic Operators
The Arithmetic operators are used for arithmetic operations such as addition, subtraction, multiplication, and division. The five arithmetic operators are
Operator
|
Meaning
|
Example
|
*
|
Multiplication
|
A * B
|
/
|
Division
|
A / B
|
%
|
Modulus
|
A % B
|
+
|
Addition
|
A + B
|
-
|
Subtraction
|
A - B
|
The Modulus operator returns the value of the remainder after division for example 10 % 3 will return the value 1. If one of or both of the operands in an arithmetic expression is of type real then the result of the expression is also real. If the both operands are integer, the result is an integer and we cannot use the Modulus (%) operator in a mixed mode arithmetic expression when one operand is an integer and the other one is of real type.
A = 20.5 (real number)
B = 6 (integer number)
A + b = 26.5 (result is a real number)
Relational operators
The Relational operators are used to check the relationship between two operands (variables) or compare their value with each other. These operators always return a Boolean value (True or False). When we use a relational operator between two operands, we create a logical or relational expression. They are mainly used in if else and loop statements to create or check a certain condition. There are 6 relational operators are available in the C language which are:
Operator
|
Meaning
|
Example
|
<
|
Less than
|
A < B
|
<=
|
Less than and equal to
|
A <= B
|
>
|
Greater than
|
A > B
|
>=
|
Greater than and equal to
|
A >=
|
==
|
Equal to
|
A == B
|
!=
|
Not equal to
|
A != B
|
Logical operators
As the name suggests, these operators are used for Logical or compound relational expressions. A compound relational expression simply is an expression with more than one relational expression. Like the relational operators, the logical operators are also used in control (if else) or looping (for, while etc.) statements. A logical expression returns a Boolean value which either True (1) or False (0). The three logical operators in the C are:
Operator
|
Meaning
|
Example
|
&&
|
AND
|
A && B
|
||
|
OR
|
A || B
|
!
|
NOT
|
A ! B
|
Consider the compound relational expression example:
A = 5
B = 10
C = 15
(A > b && A > c)
The AND operator will return the value True if the both expressions or values are True otherwise it will return False. The OR operator will return the value True if either one of the expressions or both of them equal to True otherwise it will return False. Check the Truth table below:
A
|
B
|
A && B
|
A || B
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
In case of the NOT operator, the operator will return True if the expression evaluates to False and it will return False if the expression evaluates to True.
A
|
!A
|
0
|
1
|
1
|
0
|
Assignment operators
To assign an expression or constant to a variable we use the Assignment operator (=). We have already seen the use of the assignments operator in arithmetic expressions like:
A = 9
B = 6 + A
In the example above we assigned the constant value 9 to the variable A using the equal sign (=) or the assignment operator and in the next statement we are adding the value 6 to A and then assign the result to the variable B. we can use two types of the assignment operator in the C program, Simple (like the examples above) and Shorthand (Arithmetic) assignment. A shorthand or arithmetic assignment operator is the equal sign with a Prefix arithmetic operator, for example:
A = A + 1 A +=1
The first expression uses a simple assignment operator but the second expression uses a shorthand assignment operator. The both examples are equals and perform the same task which is adding 1 to A.
Conditional operators
The Conditional operators or ?: can be used to create a conditional expression just like an if else statement. The general syntax is
Expression1 ? Expression2 : Expression3;
If the expressin1 evaluate to True, then the expression2 will be executed but if the expression1 evaluate to False then the expression3 will be executed, for example
(A > B) ? (A + C) : (A – C)
In the example above if the variable A is greater than the B then its value will be added to the C but if it is less than B (which is False) then its value will be subtracted from the C.
Increment and Decrement operators
The Increment operator (++) increases the value of the variable by one and the Decrement operator (--) decreases its value by one. These operators mainly used in the loop structures which we will see in the later chapters. The Increment/Decrement operators are of two types, Prefix and Postfix. In prefix increment operator, the value of the operator will be incremented/decremented then the result will assign to the variable. In the postfix increment/decrement operators, first the value will assign to the variable then it will be incremented/decremented. To understand the concept better, consider the example below:
A = 10
B = ++A (prefix) B = A++ (postfix)
In the first prefix operator, after the executing the statement, the value of the A will be 11 and the value of B will be 11 as well. But in the second postfix operator, after executing the statement, the value of A will be 10 and the value of B will be 11 (we get the same result in the case of decrement operator but the value will be decremented instead).
Operators Precedence
Another important concept when we write a C program that we should consider is the order of Precedence of the Arithmetic, Logical, and Relational expressions. It determines that in which order the operations will be executed by the C compiler. If we assume an expression such as A + B * C, it would important for us to know which operation performed first (the addition operator or the multiplication). The table below gives you the precedence and associatively between the operators in the C language. Remember the operator with the highest Priority (the lesser the number the higher the priority) will execute first and those with equal priority will execute associatively (left to right or right to left).
Operator
|
Priority
|
Associatively
|
Description
|
()
|
1
|
Left to Right
|
Parenthesis
|
[]
|
1
|
Left to Right
|
Square Bracket
|
+
|
2
|
Right to Left
|
Unary Plus
|
-
|
2
|
Right to Left
|
Unary Minus
|
++
|
2
|
Right to Left
|
Increment
|
--
|
2
|
Right to Left
|
Decrement
|
!
|
2
|
Right to Left
|
Logical NOT
|
~
|
2
|
Right to Left
|
Ones Compliment
|
*
|
2
|
Right to Left
|
Indirection
|
&
|
2
|
Right to Left
|
Address
|
Size of
|
2
|
Right to Left
|
Size of an Object
|
(Type)
|
2
|
Left to Right
|
Type Cast
|
*
|
3
|
Left to Right
|
Multiplication
|
/
|
3
|
Left to Right
|
Division
|
%
|
3
|
Left to Right
|
Modulus
|
+
|
4
|
Left to Right
|
Addition
|
-
|
4
|
Left to Right
|
Subtraction
|
<<
|
5
|
Left to Right
|
Left Shift
|
>>
|
5
|
Left to Right
|
Right Shift
|
<
|
6
|
Left to Right
|
Less than
|
<=
|
6
|
Left to Right
|
Less than Equal to
|
>
|
6
|
Left to Right
|
Greater than
|
>=
|
6
|
Left to Right
|
Greater than Equal to
|
==
|
7
|
Left to Right
|
Equality
|
!=
|
7
|
Left to Right
|
Inequality
|
&
|
8
|
Left to Right
|
Bitwise AND
|
^
|
9
|
Left to Right
|
Bitwise XOR
|
|
|
10
|
Left to Right
|
Bitwise OR
|
&&
|
11
|
Left to Right
|
Logical AND
|
||
|
12
|
Left to Right
|
Logical OR
|
?:
|
13
|
Right to Left
|
Conditional Expression
|
=
|
14
|
Right to Left
|
Assignment
|
,
|
15
|
Left to Right
|
Comma Operator
|