有一道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);} 展开
{return a+b;}
main()
{int x=6,y=7,z;
z=func(func(x++,y++),func(--x,--y));
printf("%d",z);} 展开
7个回答
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
func(x++,y++)返回的是13 因为,x和y没有遇到分号结束符,所以他们是原来的值
func(--x,--y)返回的是11 因为--放在前面所以不用遇到分号也会自动减1
而func(func(x++,y++),func(--x,--y))返回的是13+11
所以z=24
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是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跑的。。。
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跑的。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
经过调试运行确实是24,一开始我的分析也是26,唉,白瞎了啊~~实践一下就出来了,并且第一行代码应该是int fun(int a,int b)~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是24,二楼正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是不是想自己创建一个内存堆空间并进行一系列操作,我帮你改了下,不知道是不是你想要的意思
#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!");
}
}
#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!");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询