自增自减运算符

自增自减运算符的前置与后置:

下面我们通过几个程序来看自增(自减也是一样)运算符:

程序1:

#include <STDIO.H>


int main()
{
	int i1=5,i2=5,j1,j2;
	j1=++i1;
	j2=i2++;
	printf("j1=%d\nj2=%d\n",j1,j2);

	return 0;
}
程序运行结果:
:

自增运算符前置是先增后赋值,自增运算符后置是先赋值后增

程序2:

#include <STDIO.H>

int main()
{
	int i1=5,i2=5;
	printf("++i1=%d\ni2++=%d\n",++i1,i2++);
	return 0;
}
程序运行结果:

自增运算符在printf函数里得到的运算结果和赋给变量的结果是一样的,两者效果相同

程序三:

#include <STDIO.H>
int main()
{
	int i1,i2=0;
	for (i1=1;i1<=5;i1++)
	{
		i2+=1;
	}
	printf("%d\n",i2);

	i2=0;
	for (i1=1;i1<=5;++i1)
	{
		i2+=1;
	}
	printf("%d\n",i2);

}
运行结果:

为什么呢?自增运算符的前置和后置形式在循环里的值竟然是一样的?

仔细想想,是因为for循环的判断条件是i1<=5,这是用i的值在判断循环是否结束!自增运算符无论放在i1的前面还是后面,i1的值都会加1,所以两个循环最后得到的i2值相同

但是,我们如果用表达式的值判断循环是否结束,结果又不一样!

程序4:

#include <STDIO.H>
int main()
{	int j,i1,i2=0;
for (i1=1;j<=5;j=i1++)
{
	i2+=1;
}
printf("i2=%d\n",i2);
return 0;
}
运行结果:

程序5:

#include <STDIO.H>
int main()
{	int j,i1,i2=0;
for (i1=1;j<=5;j=++i1)
{
	i2+=1;
}
printf("i2=%d\n",i2);
return 0;
}
运行结果:

因为程序4和程序5是在用表达式的值,也就是j的值在判断循环是否结束,所以会得到以上结果,原理和程序1 程序2是一样的。



重点:自增自减运算符的操作结果不是被他们所修改的变量,而是变量值得拷贝

i++=5;结果会是什么呢?

这样做你会得到一个错误,i++的结果是i值得拷贝,并不是一个变量,不可以向常量赋值。


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值