The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+20 votes
2.6k views

What is printed by the following C program?

int f(int x, int *py, int **ppz)			
{						                    	
    int y, z;					                		
    **ppz += 1; z = **ppz;		 // corrected z = *ppz; to z = **ppz;                
    *py += 2; y = *py;					                	
    x += 3;					                    	
    return x+y+z;
}

void main()
{
    int c, *b, **a;
    c = 4; b = &c; a = &b;
    printf("%d", f(c, b, a));
    	
}
  1. $18$
  2. $19$
  3. $21$
  4. $22$
asked in Programming by Veteran (59.4k points)
edited by | 2.6k views
0

Mistake is there.

0
that also has mistake rt?
0
yes

4 Answers

+25 votes
Best answer

return $x+y+z =$ return $7 + 7 + 5 =$ return $19$

so option B $= 19$ is correct

answered by Boss (30.6k points)
edited by
0
good explanation
–2
on execution of "x+=3;" the value returned should be 10+7+5=22.
x being an integer.
+3
X is  just a local variable of f, it is not same as C,( call by value) while calling the function f , c's value was passed to it, that's it.  Any changes to C's ( using its pointer variable)vàlue will not effect X 's value..
0
The main point to be careful above code is X=X+3, not X= *X+3
+16 votes

Answer is B.

z = *ppz is a typo and it must be z = **ppz; 

**ppz+=1; \text{ modifies the value of c to 5. }\therefore \text{ z=5.}\\ **py+=2; \text{ modifies the value of c to 7. }\therefore \text{ y=7.}\\ \text{ But x will be called as x=4, }\therefore \text{ x=7.}\\ \text{Answer: 7+7+5=19.}

answered by Active (4.2k points)
0
it will be *py ...
+1 vote
Answer is B.
answered by Boss (19.7k points)
0 votes
z = *ppz Shouldn't be z = **ppz ??
answered by Veteran (54.7k points)
+5

Yes. But you can't complain so in GATE. GATE takers are expected to apply logic to correct the questions since GATE 2013. Never say "mistake" in question paper- they are made by experts. 

http://gate.iitm.ac.in/gateqps/2008/cs.pdf

0
So Sir. we are supposed to correct the question paper and apply the logic ?
+1
They happen rarely and this one is most stupid mistake. Everyone can point out it.
+1
yes. And this year they have answer scrutiny. So, if you find any question wrong do not bother to spend time on it- but question wrong is extremely rare so do not count too much on this.
0
if there is any mistake in the question marks are awarded to everyone right
Answer:


Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

34,775 questions
41,742 answers
118,910 comments
41,388 users