C Programming - Functions - Discussion

Discussion Forum : Functions - Find Output of Program (Q.No. 19)
19.
What will be the output of the program?
#include<stdio.h>

int fun(int i)
{
    i++;
    return i;
}

int main()
{
    int fun(int);
    int i=3;
    fun(i=fun(fun(i)));
    printf("%d\n", i);
    return 0;
}
5
4
Error
Garbage value
Answer: Option
Explanation:

Step 1: int fun(int); This is prototype of function fun(). It tells the compiler that the function fun() accept one integer parameter and returns an integer value.

Step 2: int i=3; The variable i is declared as an integer type and initialized to value 3.

Step 3: fun(i=fun(fun(i)));. The function fun(i) increements the value of i by 1(one) and return it.

Lets go step by step,

=> fun(i) becomes fun(3) is called and it returns 4.

=> i = fun(fun(i)) becomes i = fun(4) is called and it returns 5 and stored in variable i.(i=5)

=> fun(i=fun(fun(i))); becomes fun(5); is called and it return 6 and nowhere the return value is stored.

Step 4: printf("%d\n", i); It prints the value of variable i.(5)

Hence the output is '5'.

Discussion:
17 comments Page 2 of 2.

Abhinav said:   1 decade ago
Output will be 5 only because of fun (i=5), here 5 is stored in I so output is 5. If the question would have been like:

i = fun (i=fun(fun(i))); then the output will be 6.

Ishita said:   1 decade ago
As there is no such variable in which value 6 returned can be stored. So answer is 5. As we have to print value of i.

Fajal said:   1 decade ago
But when there is fun (i=5) the function again gets called and it returns 6. So according to my point of view the answer is 6. Can anyone explain how it is 5.

Rav said:   1 decade ago
I don't agree with the reason of @Ketan. Its wrong in my opinion. Why is it not returning? Can you explain?

Sahil Ahmed said:   1 decade ago
Won't it give an Lvalue required error?

Ketan said:   1 decade ago
fun(i=fun(fun(i)))
i is 3.

So,
fun(i=fun(fun(3)))

i.e. fun(i=fun(4))

i.e. fun(i=5)

So here i is assigned 5.

So 5 will get printed.
(1)

Srinivas said:   1 decade ago
fun(i = fun(fun(i)));

Becomes fun(5); is called and it return 6 and nowhere the return value is stored.

Why it is not returning the value 6 can one please tell me?


Post your comments here:

Your comments will be displayed after verification.