100k views
1 vote
Given the following function definition

void calc (int a, int& b)

{

int c;

c = a + 2;

a = a * 3;

b = c + a;

}

What is the output of the following code fragment that invokes calc?

(All variables are of type int)

x = 1;

y = 2;

z = 3;

calc(x, y);

cout << x << " " << y << " " << z << endl;

A.
1 2 3

B.
1 6 3

C.
3 6 3

D.
1 14 9

User Erxin
by
4.2k points

1 Answer

2 votes

Answer:

B. 1 6 3

Step-by-step explanation:

Given function definition for calc:

void calc (int a, int& b)

{

int c;

c = a + 2;

a = a * 3;

b = c + a;

}

Function invocation:

x = 1;

y = 2;

z = 3;

calc(x, y);

cout << x << " " << y << " " << z << endl;

  • Since x is passed by value, its value remains 1.
  • y is passed by reference to the function calc(x,y);

Tracing the function execution:

c=3

a=3

b=c+a = 6;

But b actually corresponds to y. So y=6 after function call.

  • Since z is not involved in function call, its value remain 3.

So output: 1 6 3

User Dheeraj Palagiri
by
5.4k points