Sccot丶 发表于 2014-7-30 10:55:57

关于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++);
}
得出来的值是多少呢,不同的编译器算出来会不会不一样呢?好费解

vvqboy 发表于 2014-7-30 10:55:58

这个问题,在你没初步研究汇编语言之前,没必要深究。
研究了汇编语言后,你会发现,不同的编译器,会把你的++符号编译成不同的汇编语句。
这没什么惊奇的,程序(编译器也是程序)都是人写的,编写的人想怎样就怎样。

Whatafuck 发表于 2014-7-30 11:21:55


Whatafuck 发表于 2014-7-30 11:49:54

与编译器有关啊,记得给分啊:sad

牡丹花下死做鬼 发表于 2014-7-30 12:11:26

论坛自己找一下 N多大牛做过很多次详细的解答

『浴火凤凰』 发表于 2014-7-30 13:59:11

结果如下。。。。

我觉得应该是 8,9,8,8,9,7



黄种人 发表于 2014-7-30 15:26:05

C语言默认采用的是_cdecl函数调用方法,函数参数从右到左依次入栈, 所以计算过程是从右到左的,你试试

cable5881 发表于 2014-7-30 16:06:06

好像很难得样子:titter:

wuyoun17 发表于 2014-7-30 21:57:57

这个确实跟编译器有关系,小甲鱼的课里面有讲的。。。。。。

Sccot丶 发表于 2014-7-30 23:12:37

wuyoun17 发表于 2014-7-30 21:57
这个确实跟编译器有关系,小甲鱼的课里面有讲的。。。。。。

提示了一点的

Sccot丶 发表于 2014-7-30 23:13:15

cable5881 发表于 2014-7-30 16:06
好像很难得样子

对我来说,理不过来了

Sccot丶 发表于 2014-7-30 23:21:03

vvqboy 发表于 2014-7-30 12:54
这个问题,在你没初步研究汇编语言之前,没必要深究。
研究了汇编语言后,你会发现,不同的编译器,会把你 ...

可是我就想知道我的VC++编译器是怎么运行这个语句的,我的编译器答案是8,7,8,8,-8,-8,他视频里面提到先算所有的i的前面的++和--,算出来i的值之后怎么计算呢?

Sccot丶 发表于 2014-7-30 23:21:51

『浴火凤凰』 发表于 2014-7-30 13:59
结果如下。。。。

我觉得应该是 8,9,8,8,9,7

你是怎么算的呢?

Sccot丶 发表于 2014-7-30 23:24:37

Whatafuck 发表于 2014-7-30 11:49
与编译器有关啊,记得给分啊

怎么给分呐

H9enRy 发表于 2014-7-31 01:20:02

8
9
8
8
8
-8

liuwang 发表于 2014-7-31 09:58:13

嗯嗯
应该有关吧

Sccot丶 发表于 2014-7-31 17:20:46

liuwang 发表于 2014-7-31 09:58
嗯嗯
应该有关吧

我还是不太明白我的编译器是怎么运算的

H9enRy 发表于 2014-7-31 17:49:55

帮顶

不知何名才好 发表于 2014-7-31 19:17:32

a++:后置自加运算符,表示先把a的值打印到屏幕上,然后把再把a的值加上1。
++a:前置自加运算符,表示先把a的值加上1,然后再把a的值打印到屏幕上。

wangerwanger 发表于 2014-8-1 12:45:11

对,就不同编译器编译结果不同
页: [1] 2
查看完整版本: 关于i++,++i的一些问题