C語言實戰105例子——例項2 靈活使用遞增(遞減)操作符
阿新 • • 發佈:2018-11-11
解析:
1)前置運算:++i、- -i,這種方式的運算規則是,先使變數的值增(或減)1 , 然後再以變化後的值參與其他運算。
2)後置運算:i++,i–,這種方式的運算規則是變數先參與其他運算,然後再使變數的值增(或減)1。
例子
#include<stdio.h> #include<stdlib.h> #define BUFFERSIZE 1024 /*允許處理的最長行有1024個字元*/ int main() { int i=5,j; //clrscr(); j=i++; /*將 i 的值賦予j 之後,i 自增1*/ printf("i=%d,j=%d\n",i,j); i=++j; /* 先使j 自增1 , 然後將j 的值賦與i*/ printf("\ni=%d,j=%d\n",i,j); printf("\ni=%d\n",++i); printf("\ni=%d\n",--i); printf("\ni=%d\n",i++); printf("\ni=%d\n",i--); j=-i++; printf("\ni=%d,j=%d\n",i,j); j=-i--; printf("\ni=%d,j=%d\n",i,j); printf("\ni = %d,%d,%d\n",i,i--,i--); int m=6; printf("\ni = %d,%d,%d\n",m,m-1,m-2); getchar(); system("pause"); return 0; }
重點講解以下的兩條語句:
1)
j=-i++;
printf("\ni=%d,j=%d\n",i,j);
此語句的作用是取i 的值加上負號後賦予j , 然 後 i 自增 1。上面那句,執行完,其實i=6參與下面的運算(顯示的是7),j的值是-6,i的值是7。
2)
類似的,下面的語句
j=-i–;
printf("\ni=%d,j=%d\n",i,j);
此語句的作用是取i 的值加上負號後賦予j , 然 後 i 自減 1。若此時i=7, j的值就是-7,i的值是6.
3)
在多數 C 中,printf中各輸出引數的求值是從右向左的,也就是先求最後一個i - 的值,得 到 6 後 i 自減1 , 再求前一個i- - , 得到 值 5 後 i 再自減1 , 最後求最左邊的i 值 ,變成了 4 , 所以輸出是
4,5,6