關於自增符的運算

2021-07-25 10:11:37 字數 810 閱讀 1038

首先,自增分為前置和後置:++i和i++。

在單獨成式的情況下,兩者並沒有什麼區別,都是把i+1的值賦給i

但在表示式中,兩者有明顯的區別。

例如

int i = 1, j = 1;

int a, b;

a = i++;

b = ++j;

執行結果:a=1,b=2,i=2,j=2

可以看出,後置自增先以i的值完成表示式的運算再使i+1

前置自增先使i+1再以此時i的值完成表示式的運算。

這樣,便可以進一步**取值運算子』*』與』++』之間結合的問題。

int a[5] = ;

int*p = &a;

printf("%d\n", *p++ );

printf("%d\n", *(p++) );

printf("%d\n", *++p );

printf("%d\n", ++*p );

執行結果是:

1 2 4 5

首先要明確:』*』與』++』的優先順序是相同的,且結合方向是自右向左。

因此p++ =(p++)

++p=(++p)

++*p=++(*p)

在*(p++)中,由於後置的』++』在表示式計算完後生效,因此等效於先取*p,再讓指標p++,即指向下乙個元素的位址。

在*(++p)中,前置的』++』先自增再參與運算,因此指標p先指向下乙個位置再取指標所指向的值。

在++(*p)中,先取p指標指向的值,再使這個值+1。

自增自減運算子

自增自減運算子 i 先使用i,然後i i 1 i 先使用i,然後i i 1 i 先i i 1然後使用i i 先i i 1 然後使用i 以下使用vc下除錯的結果,不同的編譯器可能有不同的結果。i 3 例1printf d i 結果輸出4 例2printf d i 結果輸出3 例3printf resu...

自增 ,自減 運算子

自增1運算子記為 其功能是使變數的值自增1。自減1運算子記為 其功能是使變數值自減1。自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式 i i自增1後再參與其它運算。i i自減1後再參與其它運算。i i參與運算後,i的值再自增1。i i參與運算後,i的值再自減1。在理解和使用上容易...

自增運算子 與 自減運算子

字首形式的 操作符出現在運算元的前面。例如 a 說明 運算元的值被相加,而表示式的值就是運算元增加後的值。舉例 int a,b 1 a b b增加至2,a得到的值為2 字尾形式的 操作符出現在運算元的後面。例如 a 說明 運算元的值仍被相加,而表示式的值是運算元增加前的值。舉例 int a,b 1 ...