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 3 of 10.
R.K said:
9 years ago
Well said @Sundar. Thankyou.
Nilesh said:
9 years ago
In return statement can we return two values at a time?
Dimple said:
10 years ago
The output will be 12 12.
I checked in Dev CPP. It takes the right most one in the return statement because according to the comma operator has left to right priority. I hope it will helps for you.
I checked in Dev CPP. It takes the right most one in the return statement because according to the comma operator has left to right priority. I hope it will helps for you.
Rrrr said:
10 years ago
But here the return case we not suppose to do like that it is not possible so it will get error.
KARTHIK said:
10 years ago
RETURN always return the rightmost value.
Ashish mishra said:
6 years ago
Since ', ' comma operator is right-left associative right most value will be return at the returning time. This is the simplest explanation of this problem.
Thank you.
Thank you.
Prasanth said:
2 years ago
Actually it returns a value like that k=(8,12).
if we give multiple values for integers with brackets, the compiler only considers the last value 12.
Note :
if we declare a variable it considers a last value,
int a=(1,2,3) // a=2.
else we initialize a variable that considers the first value,
int a;
a=(1,2,3)
// a=1.
if we give multiple values for integers with brackets, the compiler only considers the last value 12.
Note :
if we declare a variable it considers a last value,
int a=(1,2,3) // a=2.
else we initialize a variable that considers the first value,
int a;
a=(1,2,3)
// a=1.
Dhananjay said:
3 years ago
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 is 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".
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 is 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".
Shruti said:
3 years ago
The last value is returned and all the values before that are simply ignored.
VANSHIKA said:
4 years ago
This function is not having a prototype so why isn't it is having compile error.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers