自增在前与在后的区别。

当i = 3时。y = (i++)+(i++)+(i++)
x =?y =?y = (++i)+(++i)+(++i)x =?y =?其中的过程是什么?

++i是马上把i+1然后用于计算
i++是吧i用于计算,然后才把i加1

当i = 3时。y = (i++)+(i++)+(i++)
一、
y =(i++ 才这里i还是为3) + (到了这里i已经加了1所以i为4了)(i++) + (i++)

二、
y = (3) + (4 ,因为++在i的后面,所以这里还是i=4) + (到了这里i又已经加了1所以i为5了)(i++)

三、
y = (3) + (4) + (5,因为++在i的后面,所以这里i还是为5)

四、
y = (3) + (4) + (5) = 12 这时i会加1所以i为6

http://www.guokr.com/blog/471312/

http://blog.jobbole.com/53211/

http://baike.baidu.com/link?url=qj1G0SXGc_3LqrALMiK809Hhx9EDhKm5d5X44GBfASP1j52h4OFmLpffX5xkpj3AfLM1GTIRXn29g0ENdqhfkq

类似于a+=a++;或者(i++)+(i++)+(i++)属于未定义行为,并不是说c语言中还未定义这种行为,它早有定论,它的结果取决于编译器实现,不要写这样的代码!

1、++i
可以看成是 i= i+ 1;return i;即返回i值。
2、i++
可以看成是temp = i;i = i+ 1; return temp;即返回temp值;

所以当需要返回值时,两者是有区别的,一个是返回自加后的值,一个是返回自加前的值,
不需要返回值时,也是有区别的,从上面可以看出,第一个的代码效率更高点。

i++先引用再自加,++i先自加再引用

比如i=3,
y=i++;先引用y=3,再自加i=4

y=++i;先自加i=4,再引用y=4

前面的:
i = i + 1 ;
.....

后面的:
...
...
i = i + 1;