C语言实战105例子——实例2 灵活使用递增(递减)操作符

版权声明:共同提高:) https://blog.csdn.net/u011436427/article/details/83093880

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

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/83093880