在Fedora 20桌面上使用GCC编译,以下代码输出10。
int x=10;
int y=5;
printf("%d",(y,x));
答案 0 :(得分:4)
在C中,(y,x)
表示评估x
和y
并仅返回x
。例如。来自维基百科:
逗号运算符(由标记表示)是一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值(和类型)。
答案 1 :(得分:2)
这就是“逗号操作员”(不要混淆) 在分离函数参数时使用逗号。)
“结果”只是最后一部分,但如果其他部分是功能等,则 它们也将被执行。
答案 2 :(得分:1)
在C (exp1,exp2)
首先评估exp1
,然后评估exp2
,并为整个表达式返回exp2
的值。
(exp1, exp2)
与(exp1 && exp2)
类似,但exp1
和exp2
都会
无论exp1
返回什么,都要进行评估。(exp1, exp2)
与{ exp1; exp2; }
类似,但可以用作{{1}}
函数调用或赋值中的表达式。