You are on page 1of 36

Operators and Expressions

BY
Vineetha Jain K V
Assistant Professor
Department of CSE

1
Contents
Objective
Introduction
Arithmetic operations
Arithmetic expressions
Relational operators
Logical operators
Assignment operators
Increment and decrement operators
Conditional operators
Bitwise
Special Operators
Type conversions in expressions
2
Objectives
♥ To be able to construct and evaluate
expressions.
♥ To master operator precedence and
associativity
♥ To understand implicit type conversion and
explicit type conversion.

3
3.1 Introduction
 An operator is a symbol that tells the computer to
perform certain manipulations.
 An expression is a sequence of operands and operators
that reduces to a single value.
 C operators can be classified into a number of
categories.
◦ Arithmetic operators
◦ Relational operators
◦ Logical operators
◦ Assignment operators
◦ Increment and decrement operators
◦ Conditional operators
◦ Bitwise operators
◦ Special operators

4
5

3.2 Arithmetic operators


 The arithmetic operators in C

Operator meaning
+ Addition or unary plus
- Subtraction or unary minus
* Multiplication
/ Division
% modulo division
6

3.2 Arithmetic operators


 Note:,
◦ Integer division truncates remainder
◦ The % operator cannot be applied to a float or double.
◦ The precedence of arithmetic operators
 Unary + or -
* / %
+ -
7

3.10 Arithmetic expressions


 An arithmetic expression is a combination of variables,
constants, and operators.
 For example,
 a*b-c -> a*b-c
 (m+n)(x+y) -> (m+n)*(x+y)
 ax2+bx+c ->a*x*x+b*x+c
8

3.3 Relational Operators


 The relational operators in C are :

Operator Meaning
< less that
<= less than or equal to
> greater than
>= greater than or equal to
== equal to
!= not equal to
Relational Operators
A relational expression yields a value of
1 or 0.
◦5<6 1
◦ -34 + 8 > 23 - 5 0
◦ if a=3, b=2, c =1; then a > b > c is ?

the associativity of relational operators is


left to right

9
3.4 Logical operators
C has the following three logical
operators
◦ && meaning logical and
◦ || meaning logical or
◦ ! meaning logical not ( unary operator )
Expressions connected by && or || are
evaluated left to right, and evaluation
stops as soon as the truth or falsehood of
the result is known.

10
3.5 Assignment operators
The use of shorthand assignment
operators has three advantages:
◦ 1. What appears on the left-hand side need not
be repeated and therefore it becomes easier to
write.
◦ 2. The statement is more concise and easier to
read.
◦ 3. The statement is more efficient.

11
3.6 Increment and decrement
operators
C provides two unusual operators for
incrementing and decrementing variables.
The increment operator ++ adds 1 to its
operand, while the decrement operator --
subtracts 1.
The unusual aspect is that ++ and -- may
be used either as prefix operators (before
the variable, as in ++n), or postfix
operators (after the variable: n++).
 In both cases, the effect is to increment n.
But the expression ++n increments n
before its value is used, while n++ 12
The increment and decrement operators
can be used in complex statements.
Example:
m=n++ -j +10;
Consider the expression
m = - n++ ;
The precedence of ++ and – operators are
the same as those of unary + and -.
The associatively of them is right to left.
m = - n++; is equivalent to m = - (n++)
13
3.7 Conditional operator
a ternary operator pair “? : ” is available
in C to construct conditional expressions
of the form
expr1 ? expr2 : expr3
the expression expr1 is evaluated first. If
it is non-zero (true), then the expression
expr2 is evaluated, and that is the value of
the conditional expression. Otherwise
expr3 is evaluated, and that is the value.
Only one of expr2 and expr3 is evaluated.
14
 z = (a > b) ? a : b; /* z = max(a, b) */

15
3.9 Special operators
1. The Comma Operator
The comma operator can be used to link
the related expressions together. A
comma-linked list of expressions is
evaluated left to right and the value of
right-most expression is the value of the
combined expression. For example, the
statement
value = (x=10, y=5, x+y);
first assigns the value 10 to x, then
assigns 5 to y, and finally assigns 15 to 16
3.14 Type conversions in
expressions
1. Implicit Type Conversion
C permits mixing of constants and
variables of different types in an
expression. C automatically converts any
intermediate values to the proper type so
that the expression can be evaluated
without loosing any significance. This
automatic conversion is known as implicit
type conversion.
The rule of type conversion: the lower
type is automatically converted to the 17
3.13 Some Computational
Problems
When expressions include real values,
then it is important to take necessary
precautions to guard against certain
computational errors. For example,
consider the following statements:
◦ a = 1.0 / 3.0;
◦ b = a * 3.0;
There is no guarantee that the value of b
will equal 1.
Another problem is division by zero.
The third problem is to avoid overflow
18
3.15 Operator precedence and
Associativity
 Rules of Precedence and Associativity
◦ (1)Precedence rules decides the order in which
different operators are applied.
◦ (2)Associativity rule decide the order in which
multiple occurrences of the same level operator are
applied.
 Table3.8 on page71 shows the summary of C Operators.
 for example,
a = i +1== j || k and 3 != x

19

The sizeof operator
The sizeof operator operates on either a variable
name, or a type name.
It gives the number of bytes occupied by the given
variable, or any variable of the given type
respectively.
For example:

sizeof(int)

would have the value 4.



Precedence among operators
Operators Associativity
()[] left to right
! ++ -- + - * type sizeof right to left
*/% left to right
+ - left to right
< <= > >= left to right
== != left to right
&& left to right
|| left to right
?: right to left
= += -= *= /= %= left to right
The precedence decreases from the top to the
bottom of the table.

Type conversions
The constituent variables and constants in an
expression can be of different types. Then the
question that naturally arises is what is the type
of the value of an expression.
For example, if in the expression a + b, a is of
type int and b is of type float, then what is the
type of the sum?
Type conversion rules tell us what should be the
type of the sum. We address these questions in
the next couple of slides.

Type conversions: cont'd.
Implicit type conversions
Such conversions in C take place in several
contexts.

In arithmetic operations:
When operands of an arithmetic operator have
different types.
For example, if a is of type int and b is of type
char then the type of the result of a + b is int.

The general rule here is that 'a lower' type is


elevated to 'a higher' type.

Type conversions: cont'd.
Across assignments:
In an assignment expression the right-hand side is
first evaluated; the returned value is the value of
the left-hand side and also the value of the
assignment expression. The type of the left-hand
side and that of the assignment expression is
the type of the right hand side.

For example,
if x is of type int and i is of char then as a result
of the assignment x = i, x becomes of type
char.

Type conversions: cont'd
Explicit type conversions
This is done by using the cast operator. The syntax
is :
(type-name) expression

The meaning is that the type of the expression is


changed to the type specified within round-
brackets. For example,
sin((float) n)
converts the value of n to type float before
passing it on to sin.
Implicit Explicit Type Convertion
 Integer Data Types
 byte
 short
 int
 long
 Floating-Point Data Types
 float
 double

Conversion Between Primitive Data
Types
For example:
int x;
double y = 2.5;
x = y;
This will cause an error
int x;
short y;
x = y;
This will NOT cause an error
…but, why?
Type Cast Operators
Type Cast Operators allow you to manually convert
from one type to another, even if it is a narrowing
conversion.
Explicit convertion or typecasting
Example: x = (int)number;
 If number is of a numeric data type, it will convert the value in
number to the int type and assigned to x.
 If number is a floating-point type, the fractional part of the value
would be lost int type and assigned to x.
 This is called truncation.
 The value in number would not be changed.
Type Conversion in Arithmetic
Operations
Recall integer division:
int number1 = 10, number2 = 4;
double number3 = number1 / number2;
number3 will have 2.0 stored in it as a result of the
division because both operands of the division are of
type int.
We can use type casting on one of the operands to
make sure the result is a double:
int number1 = 10, number2 = 4;
double number3 = (double)number1 /
number2;
number3 will have 2.5 stored in it as a result of the
division because one of the operands is of type
14-3 Shift Operators

The shift operators move bits to the right or the left.


When applied to unsigned numbers, these operators
are implementation independent. When used with
signed numbers, however, the implementation is left to
the discretion of the software engineer who designs the
compiler.
Shift-right Operation
Table 14-6 Divide by Shift
Shift-left Operation
Multiply by Shift

THANKS

36

You might also like