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;
}
12 12
No error, No output
Error: Compile error
None of above
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
91 comments Page 3 of 10.

R.K said:   1 decade ago
Well said @Sundar. Thankyou.

Nilesh said:   1 decade ago
In return statement can we return two values at a time?

Dimple said:   1 decade 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.

Rrrr said:   1 decade ago
But here the return case we not suppose to do like that it is not possible so it will get error.

KARTHIK said:   1 decade ago
RETURN always return the rightmost value.

Dishank said:   7 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 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".

Prasanth said:   3 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.

Shruti said:   4 years ago
The last value is returned and all the values before that are simply ignored.

VANSHIKA said:   5 years ago
This function is not having a prototype so why isn't it is having compile error.

Mayur 22kar said:   5 years ago
We can not return more than one value in the function.

Add mult return the value.
return (kk, ll) ;.

In this step, the execution of bracket from left to right and comma (,) operator left to write execution then return value will be ll and the end of file expression then function return this value to calling location.

And answer will be 12, 12.


Post your comments here:

Your comments will be displayed after verification.