1. 程式人生 > >C語言實戰105例子——例項2 靈活使用遞增(遞減)操作符

C語言實戰105例子——例項2 靈活使用遞增(遞減)操作符

解析:
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