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\"
The comma operator evaluates all its operands, then yields the value of the last expression.
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
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