请解释一下这个程序的输出:
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);
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
C= 10
D= 20
Run Code Online (Sandbox Code Playgroud)
我怀疑"运营商"在这里做了什么?
我使用代码块编译并运行程序.
Edu*_*rdo 23
该,
运算符计算一系列表达式并返回最后的值.
c=a,b
是一样的(c=a),b
.这就是为什么c是10
c=(a,b)
将结果a,b
,即20,分配给c
.
正如Mike在评论中指出的那样,assignment(=
)的优先级高于逗号
Udo*_*ein 11
嗯,这是关于运算符优先级:
c=a,b
Run Code Online (Sandbox Code Playgroud)
是
相当于
(c=a),b
Run Code Online (Sandbox Code Playgroud)
关键是,","运算符将返回第二个值.
从而
c=a,b
Run Code Online (Sandbox Code Playgroud)
将a分配给c并返回b
d=(a,b)
Run Code Online (Sandbox Code Playgroud)
返回b并将其分配给d
归档时间: |
|
查看次数: |
715 次 |
最近记录: |