C Programming - Functions - Discussion
Discussion Forum : Functions - Find Output of Program (Q.No. 14)
14.
What will be the output of the program?
#include<stdio.h>
int func1(int);
int main()
{
int k=35;
k = func1(k=func1(k=func1(k)));
printf("k=%d\n", k);
return 0;
}
int func1(int k)
{
k++;
return k;
}
Answer: Option
Explanation:
Step 1: int k=35; The variable k is declared as an integer type and initialized to 35.
Step 2: k = func1(k=func1(k=func1(k))); The func1(k) increement the value of k by 1 and return it. Here the func1(k) is called 3 times. Hence it increements value of k = 35 to 38. The result is stored in the variable k = 38.
Step 3: printf("k=%d\n", k); It prints the value of variable k "38".
Discussion:
16 comments Page 2 of 2.
Ranjeet kr said:
8 years ago
The right answer will be 38.
If there will be statement like this,
return k++ then the value will be 35
and 35 will be also in other case if
we declare as the extra variable as follows
int i =k++;
return i;
If there will be statement like this,
return k++ then the value will be 35
and 35 will be also in other case if
we declare as the extra variable as follows
int i =k++;
return i;
Shubham said:
5 years ago
Nice explanation and I agree @Ranjeet Kr.
Rachana said:
5 years ago
That's post Decrement so it should be 35.
Varun ranjan said:
4 years ago
# include <stdio.h>
int post(int i)
{
int m=i++;
return m;//////return then increment
}
int post3(int k)
{
k++;
return k;//////increment then return
}
int post2(int j)
{
return j++;/////return then increment
}
int main()
{
int i =10;
printf("%d\n", post(i));
int j=20;
printf("%d\n", post2(j));
int k=23;
printf("%d",post3(k));
return 0;
}
int post(int i)
{
int m=i++;
return m;//////return then increment
}
int post3(int k)
{
k++;
return k;//////increment then return
}
int post2(int j)
{
return j++;/////return then increment
}
int main()
{
int i =10;
printf("%d\n", post(i));
int j=20;
printf("%d\n", post2(j));
int k=23;
printf("%d",post3(k));
return 0;
}
Pratik said:
3 years ago
I agree, thanks @Priya.
Shonit said:
3 years ago
The output should be 35.
Because it's call by value can't increase the value in the calling function as its function activation record will be destroyed each time while returning the value. If it will pass by reference then op would be 38.
Because it's call by value can't increase the value in the calling function as its function activation record will be destroyed each time while returning the value. If it will pass by reference then op would be 38.
(1)
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers