请解释一下这个程序的输出:
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
我怀疑“,”操作员在这里做什么? 我使用代码块编译并运行程序。
答案 0 :(得分:23)
,
运算符计算一系列表达式并返回最后一个表达式的值。
c=a,b
与(c=a),b
相同。这就是为什么c是10
c=(a,b)
会将a,b
的结果(即20)分配给c
。
Mike在评论中指出,作业(=
)的优先级高于逗号
答案 1 :(得分:11)
嗯,这是关于运算符优先级的:
c=a,b
是
相当于
(c=a),b
关键是,“,”运算符将返回第二个值。
因此
c=a,b
将a分配给c并返回b
d=(a,b)
返回b并将其分配给d
答案 2 :(得分:4)
逗号运算符计算其所有操作数,然后生成最后一个表达式的值。