## 自增運算符
### 自增、自減運算符介紹
- 在程序設計中,經常遇到“i=i+1”和“i=i-1”這兩種極為常用的操作。C語言為這種操作?? 供了兩個更為簡潔的運算符,即++和--,分別叫做自增運算符和自減運算符。它們是單目運算 符,是從右向左結合的算術運算符。
### 自增、自減運算符求值過程
- 前綴表達式:++x, --x; 其中x表示變量名,先完成變量的自增自減1運算,再用x的值作為表
達式的值;即“先變后用”,也就是變量的值先變,再用變量的值參與運算。
- 后綴表達式:x++, x--; 先用x的當前值作為表達式的值,再進行自增自減1運算。即“先用
后變”,也就是先用變量的值參與運算,變量的值再進行自增自減變化。
|int num = 3|||
|--|--|--|
||++a|a++|
|表達式值|4|3|
|變量num值|4|4|
+ a++ 或者 ++a 都是表達式, 表達式是有返回值的
+ 表達式的值和變量的值不是一回事
+ a++ 或者 ++a表達式的值就是變量a的值
```
int a = 1;
int b = 100;
printf("a++ = %d\n", a++);// 先使用后操作
printf("a = %d\n", a);// 操作之后
printf("++a = %d\n", ++a);// 先操作, 后使用
b *= ++a; // 先操作, 后使用; 相當于 b *= 4
printf("a = %d\n", a);
printf("b = %d\n", b);
```
- 練習
```
i=1;
i++;
j = i++ ;
j =++i ;
j = i--;
```
> 注意
```
自增、自減運算只能用于單個變量,只要是標準類型的變量,不管是整型、實型,還是字符型 變量等,但不能用于表達式或常量。如:++(a+b), 與5++, const int N=0; N++; 等都是錯誤 的。 而i+++j++、++i+(++j)、++a+b++、++array[--j]等,這些都是合法的。
```
---
### 練習
```
int i = 5, j = 5, p, q;
// 5 6 7
p=i++ + i++ + i++; // p = (i++) + (i++) + (i++) // 6 7 8
q = ++j + ++j+ ++j;// q = (++j) + (++j) + (++j)
printf("%d,%d,%d,%d",p,q,i,j);
```
> 輸出: 18,21,8,8
> 注意: ++, -- 優先級是2級(較高)
> ++, -- 結合性是右結合性