C語言中的加加減減

2022-10-10 01:39:08 字數 4014 閱讀 1854

++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 優先順序 對於向加加或者減減這樣只需要乙個運算元...