关于i++,++i的一些问题
#include <stdio.h>void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++);
}
得出来的值是多少呢,不同的编译器算出来会不会不一样呢?好费解
这个问题,在你没初步研究汇编语言之前,没必要深究。
研究了汇编语言后,你会发现,不同的编译器,会把你的++符号编译成不同的汇编语句。
这没什么惊奇的,程序(编译器也是程序)都是人写的,编写的人想怎样就怎样。
与编译器有关啊,记得给分啊:sad 论坛自己找一下 N多大牛做过很多次详细的解答 结果如下。。。。
我觉得应该是 8,9,8,8,9,7
C语言默认采用的是_cdecl函数调用方法,函数参数从右到左依次入栈, 所以计算过程是从右到左的,你试试 好像很难得样子:titter: 这个确实跟编译器有关系,小甲鱼的课里面有讲的。。。。。。 wuyoun17 发表于 2014-7-30 21:57
这个确实跟编译器有关系,小甲鱼的课里面有讲的。。。。。。
提示了一点的 cable5881 发表于 2014-7-30 16:06
好像很难得样子
对我来说,理不过来了 vvqboy 发表于 2014-7-30 12:54
这个问题,在你没初步研究汇编语言之前,没必要深究。
研究了汇编语言后,你会发现,不同的编译器,会把你 ...
可是我就想知道我的VC++编译器是怎么运行这个语句的,我的编译器答案是8,7,8,8,-8,-8,他视频里面提到先算所有的i的前面的++和--,算出来i的值之后怎么计算呢? 『浴火凤凰』 发表于 2014-7-30 13:59
结果如下。。。。
我觉得应该是 8,9,8,8,9,7
你是怎么算的呢? Whatafuck 发表于 2014-7-30 11:49
与编译器有关啊,记得给分啊
怎么给分呐 8
9
8
8
8
-8 嗯嗯
应该有关吧
liuwang 发表于 2014-7-31 09:58
嗯嗯
应该有关吧
我还是不太明白我的编译器是怎么运算的 帮顶 a++:后置自加运算符,表示先把a的值打印到屏幕上,然后把再把a的值加上1。
++a:前置自加运算符,表示先把a的值加上1,然后再把a的值打印到屏幕上。 对,就不同编译器编译结果不同
页:
[1]
2