C Programming - Functions - Discussion

Discussion Forum : Functions - Find Output of Program (Q.No. 15)
15.
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
7, 7
7, 12
12, 7
Answer: Option
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".

Discussion:
33 comments Page 2 of 4.

Soumya said:   1 decade ago
Thanks ponturu.

Ravitheja.j said:   1 decade ago
@potnuru.

Thanks for the explanation dude. ! :).

Himansu singh said:   1 decade ago
Thanks!!!!!!!
@@ potnuru for your nice explanation.

Devam said:   1 decade ago
@potnuru.

Thanks for nice explanation........

$tRiKeR said:   1 decade ago
@Potnuru.

#include<stdio.h>

int main()
{
printf("India", "BIX\n");
return 0;
}

Then what is the output of this program if your comma operator has left to right then BIX will be output but by indiabix it is Indis then who is correct ?

Sachin said:   1 decade ago
Basically, the return statement is from right to left calling pattern because a function can't return double value at a time without using pointer. So the compiler would always take the right value as a result.

Jagan said:   1 decade ago
How do they say the k value is 12 ?

Jhansi said:   1 decade ago
How can we return two values in the return statement?

Pavan said:   1 decade ago
How the value stored in k?

Manjunath said:   1 decade ago
Will compiler accepts multiple values in return statement? isn't raises error there?


Post your comments here:

Your comments will be displayed after verification.