++i :自增運算子
功能:i 自增1後再參與運算
#include
int main()
執行結果:
說明:i 先自增1 後i變為9 再將9輸出
--i 自減運算子
功能:i自減1後再參與運算
#include
int main()
執行結果:
說明:i 先自減1 後再參與運算所以i的值是7
i++ :i參與運算後i的值自增1
#include
int main()
執行結果:
說明:因為i先參與運算後值自增1,所以輸出的值是8,9;
i-- i參與運算後i的值自減1
#include
int main()
執行結果:
說明:因為i 參與運算後i的值自減1,所以輸出的結果是8,7
-i++ i先與負號結合再自增
#include
int main()
執行結果:
說明:i先與負號結合得到-8然後再自增1(輸出-8),在第二個輸出語句中輸出9
-i--: i先與負號結合再自減
#include
int main()
執行結果:
-(++i): i先自增再與負號結合
#include
int main()
執行結果:
-(--i): i先自減再與負號結合
#include
int main()
執行結果:
(i++) + (i++) + (i++)
#include
int main()
執行結果:
說明:這裡的i++是先參與運算後再自增1
所以:p = 5 +5 + 5
有三個i++,i自增三次後得到i= 8;、
(++i) + (++i) + (++i)
#include
int main()
執行結果:
說明:++i i先自增1後再參與運算
先計算(++i)+(++i)首先自增兩次 i = 7
(++i) + (++i) = 14
而後就變為 q = 14 + (++i)
此時的第三個++i自增了三次變為8
q = 14 +8 = 22
i自增了三次變成了8
(i--) + (i--) + (i--)
#include
int main()
執行結果:
說明:這裡的i--是先參與運算後再自減1
所以:p = 5 +5 + 5
有三個i--,i自減三次後得到i= 2;、
(--i) + (--i) + (--i)
--i i先自減1後再參與運算
#include
int main()
執行結果:
說明:先計算(--i)+(--i)首先自減兩次 i = 3
(--i) + (--i) = 6
而後就變為 q = 6 + (--i)
此時的第三個++i自增了三次變為2
q = 6 +2 = 8
i自減了三次變成了2
*p++先取指標p指向的值,再將指標p自增1
#include
int main()
; int *p;
p = a;
printf("%d\n",*p++);
printf("%d\n",*p);
return 0;
}執行結果:
說明:*p++先計算*p將*p的值輸出後p自增1
所以在第二個printf中列印的是a[1]的值
*p--先取指標p指向的值,再將指標p自減1
#include
int main()
; int *p;
p = &a[1];
printf("%d\n",*p++);
printf("%d\n",*p);
return 0;
}執行結果:
說明:*p--先計算*p將*p的值輸出後p自減1
所以在第二個printf中列印的是a[0]的值
(*p)++ 先取指標p指向的值(以p為記憶體位址的值),再將該值自增1
#include
int main()
; int *p;
p = a;
printf("%d\n",(*p)++);
printf("%d\n",*p);
return 0;
}執行結果:
說明:p = a;
*p = a[0];
*(p)++ = a[0] + 1;
但是因為i++是先參與運算後自增1
所以第乙個printf()輸出的是*p的值1
第二個printf()輸出的是*p+1的值 2
(*p)-- 先取指標p指向的值(以p為記憶體位址的值),再將該值自減1
#include
int main()
; int *p;
p = a;
printf("%d\n",(*p)--);
printf("%d\n",*p);
return 0;
}執行結果:
說明:p = a;
*p = a[0];
*(p)-- = a[0] - 1;
但是因為i++是先參與運算後自增1
所以第乙個printf()輸出的是*p的值1
第二個printf()輸出的是*p-1的值 0
*++p先將指標p自增1(此時指向第二個元素) *操作取出該值
#include
int main()
; int *p;
p = a;
printf("%d\n",*++p)
return 0;
}執行結果:
*--p先將指標p自減1(此時指向第乙個元素) *操作取出該值
#include
int main()
; int *p;
p = &a[1];
printf("%d\n",*--p);
return 0;
}執行結果:
++*p:先取出p指向的數字,再將這個數字加1
#include
int main()
; int *p;
p = a;
printf("%d\n",++*p);
return 0;
}執行結果:
--*p:先取出p指向的數字,再將這個數字減1
#include
int main()
; int *p;
p = a;
printf("%d\n",--*p);
return 0;
}執行結果:
*(p++) :p與++先結合(而不是*)先結合,這個先是運算子跟誰結合在一起而不是時間的先後
如 t = *(p++);
等價於 t = *p;p++;
#include
int main()
; int *p;
p = a;
printf("%d\n",*(p++));
printf("%d\n",*p);
return 0;
}執行結果:
*(p--) :p與--先結合(而不是*)先結合,這個先是運算子跟誰結合在一起而不是時間的先後
如 t = *(p--);
等價於 t = *p;p--;
#include
int main()
; int *p;
p = a;
printf("%d\n",*(p--));
printf("%d\n",*p);
return 0;
}執行結果:
C 加加減減
自加一 有前加和後加 自減一 有前減和後減 以 後加 為類 int num 10 num 自身加1 num 11 num num num還是原來的值 num 10 num 10 num 先取num的原值參與運算,然後再自身加1 num 20 int number 10 num num 11 numb...
逗號運算子與加加減減
int x,y,z x y 1 z x y y 問執行之後x y z分別為多少?要解決這個問題 先解決乙個加加減減的問題 int a b 這個後置加加 會先把b賦值給a,然後再b加一 int a b 這個前置加加 會先把b加一,然後b賦值給a要解決這個問題 再解決乙個逗號運算子的問題 int c a...
C 自學04 算術運算子 加加減減)
1 算數運算子 加加 分為前 和後 不管是前 還是後 最終的結果都是給這個變數加一。區別表現表示式當中,如果是前 則先給這個變數自身加一,然後帶著這個加一後的值去參與運算。如果是後 則先拿原值參與運算,運算完成後,再講這個變數自身加一。減減 同上。2 優先順序 對於向加加或者減減這樣只需要乙個運算元...