为什么以下C代码10的输出?我的意思是为什么printf将x作为输出?

时间:2014-03-09 08:35:32

标签: c

在Fedora 20桌面上使用GCC编译,以下代码输出10。

int x=10;
int y=5;
printf("%d",(y,x));

3 个答案:

答案 0 :(得分:4)

在C中,(y,x)表示评估xy并仅返回x。例如。来自维基百科:

  

逗号运算符(由标记表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型)。

答案 1 :(得分:2)

这就是“逗号操作员”(不要混淆) 在分离函数参数时使用逗号。)

“结果”只是最后一部分,但如果其他部分是功能等,则 它们也将被执行。

答案 2 :(得分:1)

在C (exp1,exp2)

首先评估exp1,然后评估exp2,并为整个表达式返回exp2的值。

  1. (exp1, exp2)(exp1 && exp2)类似,但exp1exp2都会 无论exp1返回什么,都要进行评估。
  2. (exp1, exp2){ exp1; exp2; }类似,但可以用作{{1}} 函数调用或赋值中的表达式。