先上一道题:
int func(int x,int y)
{
return(x+y);
}
void main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d/n",func((a+b,b+c,c+a),(d,e)));
}
答案为9,开始没想明白是怎么一回事,以为是压栈顺序的问题,结果经人指点才知道了还有个逗号表达式这么回事(当年可能学过,都忘了,惭愧。。。)。
逗号运算符,它将两式联接起来,如:3+5,6+8称为逗号表达式,其求解过程先表达示1,后表达示2,整个表达示值是表达示2的值,如:3+5,6+8的值是14。a=3*5,a*4的值是60。
那题中func的参数就会取c+a和e的值,所以答案为9.