C Programming - Functions - Discussion
Discussion Forum : Functions - Find Output of Program (Q.No. 12)
12.
What will be the output of the program?
#include<stdio.h>
int addmult(int ii, int jj)
{
int kk, ll;
kk = ii + jj;
ll = ii * jj;
return (kk, ll);
}
int main()
{
int i=3, j=4, k, l;
k = addmult(i, j);
l = addmult(i, j);
printf("%d %d\n", k, l);
return 0;
}
Discussion:
91 comments Page 2 of 10.
Victor said:
9 years ago
It is because of the brackets in the return statement. And brackets have to l precedence, that the reason why only multiplicative part is returned back to the main function.
Sir.alid said:
9 years ago
We can return only one value at the time and in the program given return (ll, kk); Hence the compile take only one value of return (ll, kk); left to right and value gives us of kk = 12.
Delhidurai said:
9 years ago
Guys, a function can return only one value at a time. Thus the statement is invalid. Then how will come this answer 12 12?
ALOK patro said:
9 years ago
Hi @Preethi.
The description which you have given is not understable to me.
Please explain briefly.
The description which you have given is not understable to me.
Please explain briefly.
Robert said:
9 years ago
Hi, guys.
This will provide and prove the needed answer.
#include <stdio.h>
int func()
{
return (3,14);
}
int main()
{
printf("%d\n", func());
return 0;
}
This will provide and prove the needed answer.
#include <stdio.h>
int func()
{
return (3,14);
}
int main()
{
printf("%d\n", func());
return 0;
}
Abhishek Gaurav said:
9 years ago
Thank you very much @Sundar.
Pradip said:
9 years ago
Return cannot take two arguments.
Siri said:
9 years ago
Why doesn't the value '12' return to k in the next turn? Why should it go to the l?
Madhuri said:
9 years ago
Well explained. @Rahul.
Rahul said:
9 years ago
Explanation:
Step 1: int i=3, j=4, k, l; The variables i, j, k, l are declared as an integer type and variable i, j are initialized to 3, 4 respectively.
The function addmult(i, j); accept 2 integer parameters.
Step 2: k = addmult(i, j); becomes k = addmult(3, 4).
In the function addmult(). The variable kk, ll are declared as an integer type int kk, ll;
kk = ii + jj; becomes kk = 3 + 4 Now the kk value is '7'.
ll = ii * jj; becomes ll = 3 * 4 Now the ll value is '12'.
return (kk, ll); It returns the value of variable ll only.
The value 12 is stored in variable 'k'.
Step 3: l = addmult(i, j); becomes l = addmult(3, 4).
kk = ii + jj; becomes kk = 3 + 4 Now the kk value is '7'.
ll = ii * jj; becomes ll = 3 * 4 Now the ll value is '12'.
return (kk, ll); It returns the value of variable ll only.
The value 12 is stored in variable 'l'.
Step 4: printf("%d, %d\n", k, l); It prints the value of k and l.
Hence the output is "12, 12".
Step 1: int i=3, j=4, k, l; The variables i, j, k, l are declared as an integer type and variable i, j are initialized to 3, 4 respectively.
The function addmult(i, j); accept 2 integer parameters.
Step 2: k = addmult(i, j); becomes k = addmult(3, 4).
In the function addmult(). The variable kk, ll are declared as an integer type int kk, ll;
kk = ii + jj; becomes kk = 3 + 4 Now the kk value is '7'.
ll = ii * jj; becomes ll = 3 * 4 Now the ll value is '12'.
return (kk, ll); It returns the value of variable ll only.
The value 12 is stored in variable 'k'.
Step 3: l = addmult(i, j); becomes l = addmult(3, 4).
kk = ii + jj; becomes kk = 3 + 4 Now the kk value is '7'.
ll = ii * jj; becomes ll = 3 * 4 Now the ll value is '12'.
return (kk, ll); It returns the value of variable ll only.
The value 12 is stored in variable 'l'.
Step 4: printf("%d, %d\n", k, l); It prints the value of k and l.
Hence the output is "12, 12".
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers