C Programming - Functions - Discussion
#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;
}
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".
For example
int i = 2+(2,3,4);
printf("%d",i)
This will print '6' since '4' is the rightmost element and '2+4' i.e '6' will be printed..
I guess you all understood.
#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 ?
In return function. it takes only right most value.
So when k = addmult(i, j); is called value goes to the addmult(i,j) then kk=3+4=7 & ll=3*4=12.
Ten value return to the return(kk,ll) then it takes the only right most value so k=12 and then l=12.
What you said is correct, nice explanation. Keep rocking.