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 2 of 2.
Deependra said:
9 years ago
The value of local variable i, can be change in function parameter? How?
Niharika said:
9 years ago
It is post increment right so the answer will be 3.
Ranjeet said:
8 years ago
The right answer is 6.
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.
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?
Rajesh said:
7 years ago
How to say we are not saving value of i?
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.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers