c语言问题,各位大佬帮帮忙哦,谢谢了
#include<stdio.h>intmain(){inti=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n"...
#include<stdio.h>
int main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
return 0;
}
答案是:
9,8,8,9,-8,-9
而
#include<stdio.h>
int main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
return 0;
}
答案是:
8,7,8,8,-8,-8
两个就是结构不一样,为什么答案也不一样呢? 展开
int main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
return 0;
}
答案是:
9,8,8,9,-8,-9
而
#include<stdio.h>
int main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
return 0;
}
答案是:
8,7,8,8,-8,-8
两个就是结构不一样,为什么答案也不一样呢? 展开
2个回答
2019-02-16
展开全部
这个问题其实很简单,c语言默认采用_cdecl的函数调用方式,这种方式规定参数从右往左入栈,即第二段代码中
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
参数入栈顺序依次是:
-i--;
-i++;
i--;
i++;
--i;
++i;
与_cdecl相对应的是__stdcall,参数从左往右入栈.还有一些其他的调用方式就不一一列举了.
追问
对了,有一个疑问,是不是第一个的i值一直是变化的;
第二个的i值一直不变,在i=8的情况下进行操作
追答
第二个的i值也是在变的,前加加和前减减都要变,后++/--不变.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询