你好,请读以下c程序:答案为21,总感觉题目不对,下面func()函数中的参数可以这样匹配吗?

请读程序:
#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);
}
上面程序的输出结果是______。

守着星空守着你
浏览 563回答 3
3回答

紫衣仙女

可以的 (x--,y++,x+y)这使一个逗号表达式 后面x+y = 5 + 8 = 13 变量后面--,++ 都是先计算,后加减, r = fun(13,8) = 21;你可以debug一下的,一根就能出来了

慕村9548890

func((x--,y++,x+y),z--)分析(x--,y++,x+y)x--之后x=5y++之后y=8x+y = 5 + 8 = 13然后分析z--z--之后z应该等于7但由于使用的是后缀表达式,所以传递参数时传入的8,而不是7

繁花如伊

#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 表示无返回值。 其他没有问题,函数可以那么写。
打开App,查看更多内容
随时随地看视频慕课网APP