首先,自增分為前置和後置:++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 ...