Operators and expressions in c language

tanmaymodi4 4,185 views 46 slides Aug 31, 2018
Slide 1
Slide 1 of 46
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46

About This Presentation

what is operator in c language
uses of operator in c language
syatax of operator in c language
program of operator in c language
what is expressions in c language
use of expressions in c language
syantax of expressions in c language


Slide Content

Operators and Expressions in C

2+3 Operand Operator Operand: a data item on which operators perform operations. Operator: a symbol that tells the compiler to perform specific mathematical or logical functions. Definition:

Operators in C C language is rich in built-in operators and provides the following types of operators − Arithmetic operators Relational operators Logical operators Assignment operators Increment and decrement operators Conditional operator Bitwise operators Comma operator

Properties of Operators i )Precedence: priority given to the operator for a process In arithmetic operators,*,/,% are highest priority and similar precedence,+ and – have lowest precendence . Example: 8+9*2-10 =8+18-10 =26-10 =16

ii) Associativity : Direction of execution. Used when an expression has operators with equal precedence. Two types: A)left to right: Example: 12*4/8%2 Since all operators have same precedence,proceed left to right. =48/8%2 =6%2 =0

A) Right to Left: Example: x=8+5%2 Assignment operator has right to left associativity,hence right side solved first(8+1=9) and then assigned to left side.(x=9)

Priority of Operators

Rules for evaluation of expression First parenthesized sub expression from left to right are evaluated. If parentheses are nested, the evaluation begins with the innermost sub expression The precedence rule is applied in determining the order of application of operators in evaluating sub expressions The associatively rule is applied when 2 or more operators of the same precedence level appear in a sub expression. Arithmetic expressions are evaluated from left to right using the rules of precedence When parentheses are used, the expressions within parentheses assume highest priority

Examples x=5*4+ 8/2; 1 2 3 ( 8 / ( 2* ( 2 * 2 ))); 1 2 3

Example Evaluate x1=(-b+ sqrt (b*b-4*a*c))/(2*a) @ a=1, b=-5, c=6 =(-(- 5 )+ sqrt ((-5)(-5)-4*1*6))/(2*1) =( 5 + sqrt ((- 5 )(- 5 )-4*1*6))/(2*1) =( 5 + sqrt (25 -4*1*6))/(2*1) =( 5 + sqrt (25 - 4 *6))/(2*1) =( 5 + sqrt (25 - 24 ))/(2*1) =( 5 + sqrt (1))/(2*1) =( 5 + 1.0)/(2*1) =( 6.0 )/(2*1) = 6.0 /2 = 3.0

Comma Operator(,) Used to separate two or more expressions. Lowest priority Not essential to parenthesise. void main() { printf (“addition =%d \n Subtraction=%d,2+3,5-4); } Addition=5 Subtraction=1 //first + evaluated,then , evaluated

Conditional Operator(? :) Contains condition followed by two statement or values. Ternary operator:takes 3 arguments. If condition true,first statement executed,otherwise second executed. Syntax: Condition? (expression1): (expression2) void main() { printf (“result =%d”,2==3?4:5); } Result=5

Arithmetic Operators Arithmetic Operators Unary (require one operand) Binary (require 2 operands)

Arithmetic Operators Operator example Meaning + a + b Addition - a – b Subtraction * a * b Multiplication / a / b Division % a % b Modulo division- remainder Cannot be used with reals

Binary Operators %,* and % are solved first. have equal level of precedence. When occur together,solved from left to right. + and – solved after /,*,%. have equal level of precedence. evaluated from left to right.

Unary Operators Operator Example Meaning - -a Minus ++ a ++ Increment -- a -- Decrement & &a Address operator sizeof sizeof (a) Gives the size of an operator

A)minus(-): used for indicating or changing the algebraic sign of a value. Example: int x=-50 assigns the value of -50 to x. No unary plus(+) in C,even though a value assigned with + sign is valid,still not used in practice.

B)Increment and Decrement Operators: Used because fast as compared to assignment counterpart. ++ adds a value 1 to the operand -- subtracts 1 from its operand. Prefix ++a or a++ Postfix --a or a--

Rules for ++ & -- operators These require variables as their operands When postfix either ++ or -- is used with the variable in a given expression, the expression is evaluated first and then it is incremented or decremented by one When prefix either ++ or – is used with the variable in a given expression, it is incremented or decremented by one first and then the expression is evaluated with the new value

Examples for ++ & -- operators Let the value of a =5 and b=++a then a = b =6 Let the value of a = 5 and b=a++ then a =5 but b=6 i.e.: 1. a prefix operator first adds 1 to the operand and then the result is assigned to the variable on the left 2. a postfix operator first assigns the value to the variable on left and then increments the operand.

Examples: x=20; x=20; y=10; y=10; z=x*y++; z=x*++y; z=? z=?

Example-postfix void main() { int a,z,x =10,y=20; Output: clrscr (); 200 210 z=x*y++; a=x*y; printf (“\n %d %d”,z,a); }

Example-prefix void main() { int a,z,x =10,y=20; Output: clrscr (); 210 210 z=x*++y; a=x*y; printf (“\n %d %d”,z,a); }

C) sizeof and ‘&’Operator: Sizeof gives the bytes occupied by a variable. Size of a variable depends upon its datatype . ‘&’ prints address of the variable in memory.

void main() { int x=2; float y=2; clrscr (); printf (“\n sizeof (x)= %d bytes”,sizeof (x)); printf (“\n sizeof (y)= %d bytes”,sizeof (y)); printf (“\n address of x= %u and y=% u”,x,y )); } Sizeof (x)=2 Sizeof (y)=4 Address of x=4088 and y=34567

Relational Operators Used to distinguish between two values depending on their relation. Provide the relationship between two expressions. If the relation is true,then it returns a value 1otherwise 0 for false. binary operators because they take two expressions as operands.

Relational Operators Operator Meaning < Is less than <= Is less than or equal to > Is greater than >= Is greater than or equal to == Equal to != Not equal to

void main() { printf (“\n condition : return values\n”); printf (“\n10!=10 : %d”,10!=10); 0 printf (“\n10==10 : %d”,10==10); 1 printf (“\n10>=10 : %d”,10>=10); 1 printf (“\n10<=100 : %d”,10<=100); 1 printf (“\n10!=9: %d”,10!=9); 1 }

Assignment Operator(=) Used for assigning a value. Syntax: v op = exp; where v = variable, op = shorthand assignment operator exp = expression Ex: x=x+3 x+=3

Shorthand Assignment operators Simple assignment operator Shorthand operator a = a+1 a + =1 a = a-1 a - =1 a = a* (m+n) a * = m+n a = a / (m+n) a / = m+n a = a %b a %=b

Logical Operators The logical relationship between the two expressions is tested with logical operators. Can be used to join two expressions. After checking the conditions,it provides logical true(1) or false(0) status.

Operator Meaning && Logical AND || Logical OR ! Logical NOT Rules: && provides true result when both expressions are true,otherwise 0. || provides true result when one of the expressions is true,otherwise 0. ! Provides 0 if the condition is true,otherwise 1.

Truth Table a b Value of the expression a && b a || b 1 1 1 1 1 1 1 1

Examples void main() { printf (“%d”,5>3 &&5<10); 1 printf (“%d”,8>5 ||8<2); 1 printf (“%d”,!(8==8)); 0 }

Practice questions Q1.Write a program to display 1 if inputted number is between 1 and 100 otherwise 0.Use the logical and(&&)operator. void main() { printf (“enter number:”); scanf (“% d”,&x ); z=(x>=1 && x<=100 ? 1 : 0); printf (“z=% d”,z ); }

Practice questions Q2.Write a program to display 1 if inputted number is either 1 or 100 otherwise 0.Use the logical or(||)operator. void main() { printf (“enter number:”); scanf (“% d”,&x ); z=(x==1 || x==100 ? 1 : 0); printf (“z=% d”,z ); }

Practice questions Q3.Write a program to display 1 if the inputted number is except 100 otherwise 0.Use the logical not(!)operator. void main() { printf (“enter number:”); scanf (“% d”,&x ); z=(x!=100 ? 1 : 0); printf (“z=% d”,z ); }

Bitwise Operators These operators allow manipulation of data at the bit level. These operators can operate only on integer operands such as int,char,short,long .

Operator Meaning & Bitwise AND | Bitwise OR ^ Bitwise exclusive OR << Shift left >> Shift right ~ One’s complement

Truth table

Example Assume A = 60 and B = 13. In binary format, they will be as follows − A = 0011 1100 B = 0000 1101 A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011

Right Shift It is denoted by >> Bit Pattern of the data can be shifted by specified number of Positions to Right When Data is Shifted Right , leading zero’s are filled with zero. Right shift Operator is Binary Operator [Bi – two]

Right shift Q.Write a program to shift inputted data by two bits rights. void main() { int x,y ; printf (“read the integer from the keyboard:”); scanf (“% d”,&x ); x>>=2; y=x; printf (“the right shifted data is : % d”,y ); }

Left Shift It is denoted by << Bit Pattern of the data can be shifted by specified number of Positions to Left When Data is Shifted Left , trailing zero’s are filled with zero. Left shift Operator is Binary Operator [Bi – two]

Left shift Q.Write a program to shift inputted data by two bits left . void main() { int x,y ; printf (“read the integer from the keyboard:”); scanf (“% d”,&x ); x << =2 ; y=x; printf (“the right shifted data is : % d”,y ); }