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;
}
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 1 of 2.
Jetha lal said:
3 years ago
@Shashi.
First, the control will come on main and in the main check will call and directly it will return 34 and 34 will be get stored in c like c=34.
Now c will print so 34 will print and then the compiler go to the next line and find return 0 to the main (), return 0 to the main () is a message for a compiler that its work has been done.
So it will stop.
Hope you will get it.
First, the control will come on main and in the main check will call and directly it will return 34 and 34 will be get stored in c like c=34.
Now c will print so 34 will print and then the compiler go to the next line and find return 0 to the main (), return 0 to the main () is a message for a compiler that its work has been done.
So it will stop.
Hope you will get it.
Rajesh said:
7 years ago
How to say we are not saving value of i?
Shashi said:
8 years ago
#include<stdio.h>
int check (int, int);
int main()
{
int check(int i,int j)
{
return 34;
}
float n=1;
int c;
c = check(10, 20);
printf("c=%d\n", c);
return 0;
}
int check(int i, int j)
{
int *p, *q;
p=&i;
q=&j;
return i>=45 ? *p:*q;
}
Please, explain why it gives output as 34?
int check (int, int);
int main()
{
int check(int i,int j)
{
return 34;
}
float n=1;
int c;
c = check(10, 20);
printf("c=%d\n", c);
return 0;
}
int check(int i, int j)
{
int *p, *q;
p=&i;
q=&j;
return i>=45 ? *p:*q;
}
Please, explain why it gives output as 34?
Mohammed Hessen said:
8 years ago
Delete the variable i in this line;
fun(i=fun(fun(i)));
TO BE
fun(fun(fun(i)));
and it will return 3.
fun(i=fun(fun(i)));
TO BE
fun(fun(fun(i)));
and it will return 3.
Ranjeet said:
8 years ago
The right answer is 6.
Niharika said:
9 years ago
It is post increment right so the answer will be 3.
Deependra said:
9 years ago
The value of local variable i, can be change in function parameter? How?
Swathi said:
9 years ago
#include<stdio.h>
int fun(int i)
{
i++;
return i;
}
int main()
{
int fun(int);
int i=3;
printf("%d\n", fun(i=fun(fun(i))));
printf("%d\n", i);
return 0;
}
In this, you will get the output near the first printf is 6,
and near second printf it is 5,
first 5 is assigned to i in main function so i will become 5.
After that, we are calling fun(5)
Here we are not collecting return value so in fun(5) i will become 6 but i is local to that function only so that variable life is end with that function life.
int fun(int i)
{
i++;
return i;
}
int main()
{
int fun(int);
int i=3;
printf("%d\n", fun(i=fun(fun(i))));
printf("%d\n", i);
return 0;
}
In this, you will get the output near the first printf is 6,
and near second printf it is 5,
first 5 is assigned to i in main function so i will become 5.
After that, we are calling fun(5)
Here we are not collecting return value so in fun(5) i will become 6 but i is local to that function only so that variable life is end with that function life.
(1)
OMKAR GURAV said:
10 years ago
I agree with @Chetan and @Sahil. Why the L value required error won't be there?
Chetan Kulkarni said:
10 years ago
Its error, when it calls fun (i=5). It needs a variable on left side. It should give L value required error.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers