程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言中的加加減減

C語言中的加加減減

編輯:關於C
++i :自增運算符
功能:i 自增1後再參與運算
#include 
 int main()
 {
     int i = 8;
     printf("%d\n",i);
     return 0;
 }


執行結果:

\


說明:i 先自增1 後i變為9 再將9輸出


--i 自減運算符
功能:i自減1後再參與運算

#include 
 int main()
 {
    int i = 8;
    printf("%d\n",i--);
    return 0;
 }  


執行結果:

\

說明:i 先自減1 後再參與運算所以i的值是7

i++ :i參與運算後i的值自增1

#include 
 int main()
 {
     int i = 8;
     printf("%d\n",i++);
     printf("%d\n",i);
     return 0;
 }


執行結果:

\



說明:因為i先參與運算後值自增1,所以輸出的值是8,9;

i-- i參與運算後i的值自減1

#include 
 int main()
 {
     int i = 8;
    printf("%d\n",i--);
    printf("%d\n",i);
 }


執行結果:

\


說明:因為i 參與運算後i的值自減1,所以輸出的結果是8,7


-i++ i先與負號結合再自增

#include 
 int main()
 {
    int i = 8;
    printf("%d\n",-i++);‘
   printf("%d\n",i);
   return 0;
 } 


執行結果:

\


說明:i先與負號結合得到-8然後再自增1(輸出-8),在第二個輸出語句中輸出9



-i--: i先與負號結合再自減

#include 
 int main()
 {
    int i = 8;
    printf("%d\n",-i--);‘
   printf("%d\n",i);
   return 0;
 } 


執行結果:

\



-(++i): i先自增再與負號結合

#include 
 int main()
 {
    int i = 8;
    printf("%d\n",-(++i));
   printf("%d\n",i);
   return 0;
 } 


執行結果:

\


-(--i): i先自減再與負號結合

#include 
 int main()
 {
    int i = 8;
    printf("%d\n",-(--i));
   printf("%d\n",i);
   return 0;
 } 


執行結果:

\


(i++) + (i++) + (i++)

#include 
 int main()
 {
     int i = 5;
     int p = (i++) + (i++) + (i++);
     printf("%d\n",p);
     printf("%d\n",i);
     return 0; 
 }


執行結果:

\


說明:這裡的i++是先參與運算後再自增1
所以:p = 5 +5 + 5
有三個i++,i自增三次後得到i= 8;、


(++i) + (++i) + (++i)

#include 
 int main()
 {
     int i = 5;
     int p = (++i) + (++i) + (++i);
     printf("%d\n",p);
     printf("%d\n",i);
     return 0; 
 }


執行結果:

\


說明:++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()
 {
     int i = 5;
     int p = (i--) + (i--) + (i--);
     printf("%d\n",p);
     printf("%d\n",i);
     return 0; 
 }


執行結果:

\

說明:這裡的i--是先參與運算後再自減1
所以:p = 5 +5 + 5
有三個i--,i自減三次後得到i= 2;、

(--i) + (--i) + (--i)
--i i先自減1後再參與運算

#include 
 int main()
 {
   int i = 5;
   int   p = (--i) + (--i) + (--i);
   printf("%d\n",p);
   printf("%d\n",i);
   return 0;
 }


執行結果:

\



說明:先計算(--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 a[5] = {1,8,10,5,2};
    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 a[5] = {1,8,10,5,2};
    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 a[5] = {1,8,10,5,2};
    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 a[5] = {1,8,10,5,2};
    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 a[5] = {1,8,10,5,2};
    int *p;
    p = a;
    printf("%d\n",*++p)
   return 0;  
 }


執行結果:

\


*--p先將指針p自減1(此時指向第一個元素) *操作取出該值

#include 
 int main()
 {
    int a[5] = {1,8,10,5,2};
    int *p;
    p = &a[1];
    printf("%d\n",*--p);
   return 0;  
 }


執行結果:

\


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+JiM0MzsmIzQzOypwo7rPyMihs/Zw1rjP8rXEyv3X1qOs1Nm9q9XiuPbK/dfWvNMxPGJyPgo8L3A+CjxwcmUgY2xhc3M9"brush:java;">#include int main() { int a[5] = {1,8,10,5,2}; int *p; p = a; printf("%d\n",++*p); return 0; }


執行結果:

\



--*p:先取出p指向的數字,再將這個數字減1
#include 
 int main()
 {
     int a[5] = {1,8,10,5,2};
     int *p;
     p = a;
     printf("%d\n",--*p);
     return 0;
 }


執行結果:

\



*(p++) :p與++先結合(而不是*)先結合,這個先是運算符跟誰結合在一起而不是時間的先後
如 t = *(p++);
等價於 t = *p;p++;

#include 
 int main()
 {
    int a[5] = {1,8,10,5,2};
    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 a[5] = {1,8,10,5,2};
    int *p;
    p = a;
    printf("%d\n",*(p--));
    printf("%d\n",*p);
    return 0;
 }

執行結果:


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved