【发布时间】:2020-01-16 05:47:19
【问题描述】:
参考Comma-Separated return arguments in C function [duplicate] ,
x=x+2,x+1;
将被评估为
x=x+2;
但是,如果是下面的代码
#include<stdlib.h>
#include<stdio.h>
int fun(int x)
{
return (x=x+2,x+1); //[A]
}
int main()
{
int x=5;
x=fun(x);
printf("%d",x); // Output is 8
}
不应将 [A] 行计算为
x=x+2;
给x = 7
【问题讨论】:
-
这种情况下命令流程是从左到右的,你也可以试试
while(x=2,x<3)来验证——这将是一个无限循环。 -
感谢您展示我们为何尽量避免使用逗号运算符。
-
@Observer:好吧,我想我们可以将测试放在比我更多的循环形式的中间。
标签: c return-value comma