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的结果(即20)分配给c
正如Mike在评论中指出的,赋值=的优先级高于逗号,这是关于运算符优先级的:
c=a,b
是
相当于
(c=a),b
关键是,运算符将返回第二个值
因此
将a赋值给c并返回b
d=(a,b)
返回b并将其赋值给d+,并且=的优先级高于,@Eduardo+1,但是,虽然d=a的答案有点清楚,但在您的解释中添加这一点可以得到您的答案complete@Eduardo先生,但是如果有3个值会发生什么呢。x=a,b,c,d;所以这里最后一个值d被分配给x?@Swamy:没错,d将是分配给x的值
d=(a,b)