#include <stdio.h>main(){int i j;i=16;j=(i++)+i;printf("%d\t",j);i=15;printf("%d\t%d",++i,i);}輸出結果為什么是32 16 15特別第一個32怎么來的?我以為是34,請解釋詳細點,我是菜鳥,自學C語言
熱心網友
樓主,自學的話是需要一些指點的.我建議你去 ,哪里什么編程問題都可以解決.你的這個問題我給你解答一下:1.i++的意思是i的值先被引用然后再自加1,++i的意思是,i的值先加1,然后再被引用.所以,j=(i++)+i中,i的值16先被引用參加了加法,也就是j=16+16,然后i的值再加1.如果是j=(++i)+i的話,那么最后j就等于34了.2.另外還有一個有趣的現象不知道樓主主要了沒有.就是在i等于15的情況下, printf("%d\t%d",++i,i);輸出的是,16,15那么這里對于i來說,的確是先加1的,可是呢.printf這個函數是從右到左來運算的,它先計算的是i,是15,然后計算出++i,是16.所以輸出了16和15.
熱心網友
i++表示先引用i,然后再++(自加),也就是,先16+16=32.然后i=17,++i表示先自加,再引用.
熱心網友
c中運算是自右向左的,所以在j=(i++)+i中,i是等于16的,這個式子運算后的結果是j=32,i=17.后面兩個不用解釋了吧?
熱心網友
主要是你沒能明白++在前和后的區別,具體的我也忘了,自己查查書吧