Please Explain Comma Operator in this Program
Please explain me the output of this program:
int main()
{
int a,b,c,d;
a=10;
b=20;
c=a,b;
d=(a,b);
printf("\nC= %d",c);
printf("\nD= %d",d);
}
The output which I am getting is:
C= 10
D= 20
My doubt is what does the "," operator do here?
I compiled and ran the program using Code Blocks.
Solution 1:
The ,
operator evaluates a series of expressions and returns the value of the last.
c=a,b
is the same as (c=a),b
. That is why c is 10
c=(a,b)
will assign the result of a,b
, which is 20, to c
.
As Mike points out in the comments, assignment (=
) has higher precedence than comma
Solution 2:
Well, this is about operator precedence:
c=a,b
is
equivalent to
(c=a),b
The point is, the "," operator will return the second value.
Thus
c=a,b
assigns a to c and returns b
d=(a,b)
returns b and assigns it to d
Solution 3:
The comma operator evaluates all its operands, then yields the value of the last expression.