请读程序:#include <stdio.h>func(int a, int b){int c;c=a+b;return c;}main( ) {int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n", r);}上面程序的输出结果是______。
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
可以的 (x--,y++,x+y)这使一个逗号表达式 后面x+y = 5 + 8 = 13 变量后面--,++ 都是先计算,后加减, r = fun(13,8) = 21;
你可以debug一下的,一根就能出来了
慕村9548890
TA贡献1884条经验 获得超4个赞
func((x--,y++,x+y),z--)
分析(x--,y++,x+y)
x--之后x=5
y++之后y=8
x+y = 5 + 8 = 13
然后分析z--
z--之后z应该等于7
但由于使用的是后缀表达式,所以传递参数时传入的8,而不是7
繁花如伊
TA贡献2012条经验 获得超12个赞
#include <stdio.h>
int func(int a, int b)
{
int c;
c=a+b;
return c;
}
void main( )
{
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n", r);
}
答案确实是21。但是函那个函数定义需要定义函数返回值的类型,前面要加int来定义。另外主函数最好加上void 表示无返回值。 其他没有问题,函数可以那么写。
- 3 回答
- 0 关注
- 560 浏览
添加回答
举报
0/150
提交
取消