读书人

C语言菜鸟求高手解答以下代码

发布时间: 2012-04-06 12:22:24 作者: rapoo

C语言初学者求高手解答以下代码?
#include<stdio.h> int func(int a,int b)
{
int c;
c=a+b;
return c;
}
main()
{
int x=6,y=7,z=8;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
为什么答案是21?
需要详细过程?

[解决办法]
定没定义都没啥 你自己清楚就ok

主要强调2个知识点 逗号运算和++,--后置问题

逗号运算结果为最后一个表达式,此题中即为x+y,而且运算是从左往右以次计算,然后整个为最后一个表达式的值。。

x++,x--为自加运算,计算顺序为先取值进行下一步计算,再进行自身自加或自减运算,然后才修改x的值

本题中(x--,y++,x+y)x和y的值在进行x+y之前不变,所以括号计算结果为13,然后z--同理也先不变为8.

然后进行函数计算 求和运算 8+13=21,完成~若还有下面程序,则x,y,z值相应进行+1或-1变化(应该没问

题哈)

读书人网 >C语言

热点推荐