當前位置:首頁 » 編程語言 » 如何理解c語言中的先用後加
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何理解c語言中的先用後加

發布時間: 2022-05-04 18:05:57

『壹』 c語言中後加加和前加加什麼意思

前加加,代表著先運算,後加一,後加加,代表先加一,再進行運算

『貳』 請問 c語言中++a和a++的區別是什麼, 不用告訴我是先加後用和先用後加 我知道這個 請舉個例子

/*
這個例子主要是考慮到a++和++a的存儲問題;
我們知道,對於a++是先將a給表達式再++;
那麼這就是需要一個tmp空間來保存++之前
的a!!!但是對於++a是不需要的,因為先
執行++,那麼就是直接改a空間內容就好了!
那麼我們下面的問題就是這樣!
*/
#include <stdio.h>
int main()
{
int a = 4;
/*
解釋:下面的答案在Linux和VC下測試是9;
如果這樣的形式不好看,那麼寫成這樣就
可以了:a = a + ( a++ );
那麼由於a++是先把數放到tmp空間再++;
所以,執行順序:把後面a放進tmp空間,然後
a的存儲空間數++,那麼現在a中是5,tmp中是4
最後a = a + tmp;所以最終結果==9
*/
a += ( a++ );
printf("a = %d\n\n", a);

/*
解釋:這里和上面的區別就是++先後執行的
問題,執行順序:先a++,那麼此時的a中就是
5了,然後將這個結果也放進一個tmp空間,
最後在相加,那麼結果就是:5 + 5 == 10
*/
a = 4;
a += ( ++a );
printf("a = %d\n\n", a);

/*
注意:下面的代碼編譯是通過不了的哦!為什麼?
其實自最開始已經解釋了!就是有沒有tmp的問題!
注意a++是先把a給表達式,再++,那麼對於左邊
來說,其實給的存儲空間是tmp而並不是a本身,對於
tmp來說是不可以被賦值的,只能是作為輸入操作!!
所以。。。
*/
/*
a = 4;
(a++) += a;
printf("a = %d\n\n", a);
*/

/*
這個本質其實也是差不多的;
就是先有了++a放到a中了,那麼相當於是a的初
始值是5,然後在執行:a += ( a++ );那麼結果
就是11唄,呵呵~
*/
a = 4;
( ++a ) += ( a++ );
printf("a = %d\n\n", a);

return 0;
}

『叄』 C語言中,遞增運算符的「前加」與「後加」的疑問

++或者--在前或者在後是不同的,比如說a=b++的執行過程是先執行a=b,再執行b=b+1,而a=++b是先執行b=b+1,再執行a=b(這時候的b的值已經加了1)。 *to++ = *from++;是執行*to=*from,再執行*to=*to+1和*from=*from+1 *++to = *++from;是執行*to=*to+1和*from=*from+1,再執行*to=*from 之所以執行結果一樣,是因為先做了string1,這樣兩個數組都有值了,你將兩個函數的位置換一下,就會發現結果不同!!

『肆』 有關C語言前加加後後加加的問題

a=10;
b=a++;
c=++a;
=======
上述表達式等價於:
a=10;
b=a;
a=a+1;
a=a+1;
c=a;
=============
結果是
a=12
b=10
c=12

『伍』 C語言 i++問題 i++是先用後加這個用具體是什麼意思呢 y=0 y++,++y 此時

i++;這句執行之後,i=i+1;

++i;這句執行之前,i=i+1

x=8 printf("%d %d %d %d",++x,--x,x++,x--);

不知道你懂不懂棧,輸出時,事先將變數存放在棧中,然後才輸出,這就是為什麼是從右往左看。

而且我這里執行輸出是8 7 7 8哦,我用的是GCC編譯器,不知道你用的是什麼

從右往左,首先x=8;

X--;這一句執行之後X=x-1,因此這一句的時候x=8,輸出8,輸出之後X=7

X++;這一句執行之後X=X+1,因此輸出7,之後X=8

--x;這一句執行前x=x-1;因此輸出7,之後X也是=7;

++X;同理輸出8

因此,從後往前看,輸出順序就是8 7 7 8

『陸』 c語言前++後++,用在一起的話要怎麼理解。請高手幫個忙,解釋一下,謝謝

根據這張表描述的內容:
++*p++;

++(*p++);
是等價的。都是先將指針後移1位(對指針做運算),然後再獲取指針所指向的新地址的第1個字元;
++(*p)++;
//
這條語句先取出當前指定指向的第1個字元,然後再對此字元進行運算。這是錯誤的,因為"hello
world"存儲在「常量存儲區」,它的值是不能被改變的;

『柒』 請問c語言自增自減的結合性是從右到左,怎麼理解如果是從右到左,為什麼a++是先用後加呢

因為語言就是這么規定的
這樣是為了減少代碼的編寫量
a++ 就是先返回原始值然後自加1的
++a 先自加1再返回
這兩個語句 可以在很多地方使用

『捌』 c語言中怎樣理解i++和++i,請舉例具體說明

就如樓上極為說的,i++是先用後加,如:int x,y=5;
x=y++;
在這里x=y++=5,而y自身經過一次自增之後變成了6
而如果是++i的話,x=++y=6,y也=6,因為是先加後用,
反正就是i++ ++i不管哪個,i都會加1,只是i++是原來的i的值,而++i是加1之後的i的值
但是如果碰到有很多個的自增自減的時候就要看編譯器了,那個的看搞編譯器的那個人是怎麼設置的,所以如果遇到那種情況,還是盡量別用自增自減了,免得換了一個編譯器就不能用了。。。

『玖』 2 在計算機二級c語言中 a++ 的先用後加在程序中是怎麼操作的

是自增操作 無論++號在a的前面還是在後面 都是自增1, 若a++ 那說明 先把a用完後再加1 , 若++a 則說明 先執行自增操作再用。

比如:
for(a=0;a<10;a++)
a先使用,用完最後在a++
for(a=0;a<10;++a)
a先自增,然後再用
理解把!