在代碼運(yùn)行中,前++和后++的區(qū)別。
#include <stdio.h>
int main()
{
? ? int x = 1,y=10;
? ? x=x*y;
? ? x++;
? ? printf("x=%d\n",x);
? ??
? ? return 0;
}
代碼中將x++;換成++x;為什么結(jié)果是一樣呢?請(qǐng)幫忙解答!
#include <stdio.h>
int main()
{
? ? int x = 1,y=10;
? ? x=x*y;
? ? x++;
? ? printf("x=%d\n",x);
? ??
? ? return 0;
}
代碼中將x++;換成++x;為什么結(jié)果是一樣呢?請(qǐng)幫忙解答!
2016-03-03
舉報(bào)
2016-03-03
因?yàn)檫@個(gè)就是單純的自增啊,所以x++和++x沒(méi)什么區(qū)別。如果x++參與運(yùn)算了那就不一樣了,例如,a=2,x=3,表達(dá)式a*x++的值為2*3=6,表達(dá)式算完以后x要自增1,所以x的值就是4了。
而a*++x的值就為2*4=8了,這是因?yàn)閤先自增了,再參與運(yùn)算。
總結(jié)一點(diǎn)就是,++前置,先自增再參與運(yùn)算;++后置,先參與運(yùn)算,自身再自增。
2016-03-03
++在前是先自加1,再取值。++在后是先取當(dāng)前值再自加1。但是無(wú)論++前置還是后置兩者最后都會(huì)自加1,即都會(huì)執(zhí)行x=x+1,所以該程序最后輸出的a都是一樣的,如果改為printf("%d\n",x++)和printf("%d\n",++x)則兩者結(jié)果不一樣。