為什么運(yùn)算結(jié)果是0?
#include<stdio.h>
int main()
{
int a=0;
printf("%d\n",a++);
return 0;
a++還是++a都同等于a=a+1,在表達(dá)完畢后a的值不是都自增1嗎?那為什么這個(gè)運(yùn)算結(jié)果是0??? ? ? 求高手解釋一下。。。
#include<stdio.h>
int main()
{
int a=0;
printf("%d\n",a++);
return 0;
a++還是++a都同等于a=a+1,在表達(dá)完畢后a的值不是都自增1嗎?那為什么這個(gè)運(yùn)算結(jié)果是0??? ? ? 求高手解釋一下。。。
2016-12-29
舉報(bào)
2016-12-29
a++是先取值再運(yùn)算,而++a是先運(yùn)算再取值,所以執(zhí)行a++輸出結(jié)果為0,執(zhí)行++a輸出結(jié)果為1.
2016-12-31
a++。計(jì)算機(jī)語言會(huì)先告訴你a是多少。再加。 加好的結(jié)果記憶了。但是不會(huì)顯示出了。所以a是未加時(shí)的結(jié)果
++a。先給你加好。在告訴你結(jié)果。而且前面的a++。加過一了。 所以a=1。然后再加一次再告訴你a是多少
區(qū)別。 一個(gè)是先輸出目前結(jié)果再運(yùn)算。一個(gè)是先運(yùn)算再告訴你最后的結(jié)果
2016-12-30
其實(shí)我覺得可以這么理解,不知道你怎么想的。
printf("%d\n",a++);
和
printf("%d\n",++a);
這兩句程序都是要拆解執(zhí)行的,那么我認(rèn)為程序運(yùn)行機(jī)制的不同,導(dǎo)致執(zhí)行結(jié)果的改變;
printf("%d\n",a++);?? =》 ? printf("%d\n",a);? a = a +1;?? (所謂的先執(zhí)行再加加)
而
printf("%d\n",++a); ? =》 ? a = a + 1; printf("%d\n",a);?? (所謂的先加加再執(zhí)行)
希望我這么說你可以理解我的意思吧,哈哈
2016-12-29
int a=0;
a原本的值就是0,為什么自增后還是0. ? 那句話說:”a++還是++a都同等于a=a+1,在表達(dá)執(zhí)行完畢后a的值自增1".
我不明白的是 ?為什么原本是0自增后的值還是0.這自增運(yùn)算符不就不起作用了嗎?
2016-12-29
int a=0;
我不明白,a++自增運(yùn)算符在變量的后面,所以先取值0,然后再自增1,結(jié)果不是應(yīng)該是1嗎?
求解 ?。。。