C语言中printf()输出a++,++a的问题

C语言中printf("%d,%d",++a,a++)的输出问题

C语言中常用输出函数printf(), 使用时自右向左入栈, 入栈的同时进行计算, 计算后才会在%d中输出.

	int a=1;
	printf("%d,%d,%d,%d\n",++a,a--,a++,a); //2,2,1,2
	int b=5;
	printf("%d,%d,%d,%d\n",b++,++b,b,b--); //5,6,6,5
	int c=10;
	printf("%d,%d,%d,%d,%d\n",c++,c--,++c,c,--c); //9,10,10,10,10
	int d=0;
	printf("%d,%d,%d,%d\n",--d,d--,d++,d--); //-2,0,-1,0
	int e=0;
	printf("%d,%d,%d,%d,%d\n",e=80,--e,++e,++e,++e); //80,80,80,80,80

++a,–a直接在真值上进行+1-1,而a++,a–会先将自己原本的值存在副本中,然后在真值上+1-1.
最后输出时++a,–a输出真值,a++,a–输出副本值.值得注意的是在最后输出时,输出的真值以最后一个入栈的为准.
我们拿第一个来举例

a=1
++a			 2		
a--			 1		 2
a++			 2		 1
a			 1			//以最后入栈的++a为准				
			真值	副本

所以输出的是2212,而不是2211.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值