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

c語言先加和後加的區別

發布時間: 2022-06-25 02:29:44

1. 請問 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;
}

2. C語言中後加加和前加加什麼意思

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

3. c語言中的"++在前"和"++在後"的區別是什麼

++在前是先加1在運算, 在後面是先運算在加1
例子如下。

int i=0;
printf("%d",++i);i加了1才給傳遞參數,所以輸出是1

i=0;
printf("%d",i++)前傳遞參數,所以還是輸出原來的值是0
printf("%d,i) 因為上面那句加了1所以 輸出是1

4. 在C語言中,++放在前面和後面有什麼區別詳細解釋please

分兩種情況
【1】 作為單獨的語句 i++; ++i; 沒區別
【2】 在賦值輸出等語句中,++放在前面, 先自加,然後在做其他的操作語句
++放在後面則是 先執行其他的操作,後自加

5. c語言++放在前面和後面的區別分析

++在前是先加1在運算, 在後面是先運算在加1 例子如下。 int i=0; printf("%d",++i);i加了1才給傳遞參數,所以輸出是1 i=0; printf("%d",i++)前傳遞參數,所以還是輸出原來的值是0 printf("%d,i) 因為上面那句加了1所以 輸出是1

6. 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,這樣兩個數組都有值了,你將兩個函數的位置換一下,就會發現結果不同!!

7. 在C語言里++在前與在後的區別

關於你上面那道題答案的解釋:
首先:我敢確認你的答案八成是抄錯了,因為p的值應為6。
第二點:++不管在前在後都只能讓i自增1。
那麼下面我們來將你那個例子改一下:
int
p,i=2;
P=i+(++i+(i++))+i;//上式P=++i+(i++)
P=6
printf("i=%d",&i);
printf("P=%d",&P);
你說現在的P和i分別是多少呢?答案:i=4;P=12;
首先i=4,說明i之前只增加了2次,即++i和i++
第二點:p=12而你上面P=++i+(i++)(P=6),只不過多加了二個i而P值就增加了一倍。我這時想會不會和加的i順序有關結果我將i放了好幾個不同的位置,可結果都一樣。
最後一次我將它這樣放置:
P=++i+(i++)+i+i=12與P=++i+(i++)=6
比較得出這時的i為3,最後的輸出i為4.這樣規律就出來了
結論:首先++、--的執行單位是以一個;結尾的語句,當算表達式時首先算裡面帶有的(i)++(i)、(i)--(i)的運算式,得出當前的i值(如果運算符在前就先將i的值改變,如果i在後就先不改變i的值,等到以一個;結尾的本條語句執行完後再將i的改變),將最後得出i值全部賦給運算式中的i,最後再按運算符的結合性做運算。
如:
int
p,i=2;
int
p=i+(++i)+i++;
//首先算i值,在這一句:++i---->i=3,i++---->i=3(i不改變)
//再將i值用i=3替換掉:即p=3+3+3;
//再做運算將P算出:p=9;
//這句執行完後再將i+1--->i=4

8. c語言中的++在前++在後有什麼區別

++在前是先加1在運算, 在後面是先運算在加1
例子如下。

int i=0;
printf("%d",++i);i加了1才給傳遞參數,所以輸出是1

i=0;
printf("%d",i++)前傳遞參數,所以還是輸出原來的值是0
printf("%d,i) 因為上面那句加了1所以 輸出是1

9. C語言 自加在前面和在後面有什麼區別

在前面是該語句運行前就自加,後面是該語句運行完才自加