有一道C语言习题烦高手帮忙指点,给出答案及说明过程!

func(inta,intb){returna+b;}main(){intx=6,y=7,z;z=func(func(x++,y++),func(--x,--y));pr... func(int a,int b)
{return a+b;}
main()
{int x=6,y=7,z;
z=func(func(x++,y++),func(--x,--y));
printf("%d",z);}
展开
 我来答
手机用户09642
2011-08-22 · TA获得超过1783个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:525万
展开全部

结果z=22,

x++,+在后面是使用完x在+1

x--,-在前面是x-1后再使用x

开始x=6,x++先不使用,--x,x=5,同理y=6

z=(5+6)+(5+6)=22

然后x=x+1=6;y=y+1=7 

有些东西不能只靠思考,要实际试一下,其实关于这种顺序的问题,建议在机子上多试几次,这些单凭记忆是很难记清的

追问
为什么你做的时候先从逗号右边那个函数开始计算而不是按照从左到右依次计算,如果按照从左到右依次计算的话答案就是26了
追答
这个用不同软件运行结果可能会不一样,vc6.0结果是22,vs结果是24,坑爹的题目啊
匿名用户
2011-08-22
展开全部
应该是24
func(x++,y++)返回的是13 因为,x和y没有遇到分号结束符,所以他们是原来的值
func(--x,--y)返回的是11 因为--放在前面所以不用遇到分号也会自动减1
而func(func(x++,y++),func(--x,--y))返回的是13+11
所以z=24
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水孤狼
2011-08-23 · TA获得超过111个赞
知道答主
回答量:67
采纳率:0%
帮助的人:74.9万
展开全部
结果是26,
func(func(x++,y++),func(--x,--y));
执行顺序是先执行func(x++,y++),并且先执行func(x,y)再执行x与y的自加1操作。
当前x和y的值分别为6和7,得到结果13。结束时,x和y分别自加1,变为7和8。
接着执行func(--x,--y),先执行x与y的自减1操作,再执行func(x,y)。结果仍是13。

最后再执行一次func,得到结果26 ,昨天忘说了,我这手上没有C++的编译器,是转成JAVA跑的。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小崔闲叨叨
2011-08-22
知道答主
回答量:2
采纳率:0%
帮助的人:3323
展开全部
经过调试运行确实是24,一开始我的分析也是26,唉,白瞎了啊~~实践一下就出来了,并且第一行代码应该是int fun(int a,int b)~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
reneliu601
2011-08-22 · 超过24用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:47.5万
展开全部
结果是24,二楼正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户24445
2011-08-23 · TA获得超过278个赞
知道小有建树答主
回答量:689
采纳率:0%
帮助的人:383万
展开全部
你是不是想自己创建一个内存堆空间并进行一系列操作,我帮你改了下,不知道是不是你想要的意思
#include<stdio.h>
#define ALLOCSIZE 1000
char allocbuf[ALLOCSIZE];
char *allocp=allocbuf;
void main()
{
char * tealloc(int n);
void freep(char *p);
int n;
char c,*pt;
printf("please input n:\n");
scanf("%d",&n);
pt=tealloc(n);
freep(pt);
}

char *tealloc(int n)
{
if(allocp+n<=allocbuf+ALLOCSIZE) //如果当前剩余空间的指针+要申请的空间小于最大空间
{
allocp=n+allocp; //移动剩余空间指针
printf("Alloc \n");
return(allocp-n); //返回申请的空间首指针
}
else
{
printf("Alloc error"); //申请的空间大于你的堆
return(NULL); //不够就返回空
}
}
void freep(char *p)
{
if(p>=allocbuf&&p<=allocbuf+ALLOCSIZE)//如果要释放的空间在这个申请空间堆里
{
allocp=p; //那么释放它
printf("Release!\n");
}
else
{
printf("pointer is Error!");
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式