Expression evaluation problem – Computer Sir Ki Class
  

Login
[lwa]



Solved Problem #JAVA#3728 siteicon   siteicon   siteicon  

Problem Statement - Expression evaluation problem

Evaluate the following expression using the correct precedence and  other evaluation rules.
int a=0,b=1; double x=5.0;
double d= x*3/4 – b/4 + 20 – ++a + 22/7;

Solution

TC++ #3728

Run Output

25.75

int a=0,b=1; double x=5.0;
double d= x*3/4i – b/4 + 20 – ++a + 22/7;
As given in the problem statement

Solving in steps
Step 1:  3.75 – 0 + 20 – 1 + 3
As x is double multiplication with 3 integer will keep it double. Then division will 4 will happen to make it 3.75. This is because * and / have same precedence but evaluated left to right.

b=1 and b/4 will become 0 due to integer division.

++ a will become 1

22/7 will become 3 due to integer division.

Step 2:  3.75 + 22
Double portion makes 3.75, Integer portion makes 22. Both will be added to yield double 25.75

Notes

  • It is important to traverse left to to right in an expression computation. Only brackets are evaluated first, but within brackets also we traverse left to right.

Common Errors

  • While calculating 0.5*3/4 we have to multiply first and then divide due to left to right order. If this expression is 0.5*(3/4) then result would be 0 as 3/4 in integer form would yield 0.


Share

sunmitra| Created: 4-Mar-2018 | Updated: 4-Mar-2018|






Back