C 请解释一下这个程序中的逗号运算符

C 请解释一下这个程序中的逗号运算符,c,comma,C,Comma,请给我解释一下这个程序的输出: 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); } 我得到的结果是: C= 10 D= 20 我的疑问是,“操作员”在这里做什么? 我使用代码块编译并运行了程序。逗号运算符计算其所有操作数,然后生成最后一个表达式的值。运算符

请给我解释一下这个程序的输出:

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);  
}
我得到的结果是:

C= 10  
D= 20
我的疑问是,“操作员”在这里做什么?

我使用代码块编译并运行了程序。

逗号运算符计算其所有操作数,然后生成最后一个表达式的值。

运算符计算一系列表达式并返回最后一个表达式的值

c=a,b
(c=a),b
相同。这就是为什么c是10

c=(a,b)
a,b
的结果分配给
c


正如Mike在评论中指出的,赋值(
=
)比逗号具有更高的优先级。这是关于运算符优先级的:

c=a,b

相当于

(c=a),b
关键是,运算符将返回第二个值

因此

将a赋值给c并返回b

d=(a,b) 

返回b并将其赋给d

+,
=
的优先级高于
@Eduardo+1,但是,虽然
d=(a,b)
的答案有点清楚,但在您的解释中添加这一点将使您的答案更清晰complete@Eduardo先生,但是如果有3个值会发生什么呢。x=(a,b,c,d);因此,这里最后一个值(d)被分配给x?@Swamy:这是正确的,
d
将是分配给
x
的值
d=(a,b)