为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C PHP
守着星空守着你 2022-03-25 15:15:45
请读程序:#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一下的,一根就能出来了

查看完整回答
反对 回复 2022-03-28
?
慕村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



查看完整回答
反对 回复 2022-03-28
?
繁花如伊

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 表示无返回值。 其他没有问题,函数可以那么写。



查看完整回答
反对 回复 2022-03-28
  • 3 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信