...a,int b) { return(2*a+b); } void main() { int x=2,y=5,z=8...
发布网友
发布时间:2024-10-22 13:12
我来回答
共2个回答
热心网友
时间:2024-10-25 12:09
#include
int
func(int
a,int
b)
{
int
c;
c=a+b;
return
c;
}
main()
{
int
x=6,y=7,z=8,r;//(x--,y++,x+y)为逗号表达式,取最后一项的结果,即x+y==13
r=func((x--,y++,x+y),z--);//因为z--为后减减,所以调用函数相当于调用func(13,8)
printf("%d\n",r);//输出a+b,即13+8
}
热心网友
时间:2024-10-25 12:06
这个涉及到一个函数参数执行顺序的问题,如果函数有多个参数,它的执行参数是由右向左执行的,举个基本例子
int
a
=
10;
printf("testfun:%d
%d",
++a,
--a);
你会发现它是先计算--a
再计算++a。z=func(func(x++,y++),func(--x,--y));
先计算执行func(--x,--y),再func(x++,y++)
,答案肯定是2个11了