C语言难点一:printf多个变量输出计算次序中的自增与自减

devc++下

#include<stdio.h>

int main(){
	 
	//关于printf中变量的输出次序以及自增自减
	int i=1;
	printf("%d,%d,%d,%d\n",i++,++i,i++,++i); //4,5,2,5 
	printf("%d\n",i); //5 
	i=1;
	printf("%d,%d,%d,%d\n",++i,++i,++i,++i);  //5,5,5,5 
	printf("%d\n",i); //5
	i=1;
	printf("%d,%d,%d,%d\n",i++,i++,i++,i++);  //4,3,2,1 
	printf("%d\n",i); //5 
	/*由上可以总结出:
	  一个printf输出多个数据时是从右往左计算,
	  并且++i的值是等所有的i=i+1执行完才输出最终结果i,
	  而i++是根据当前计算所得i=i+1输出
	*/ 
	
	i=5;
	printf("%d,%d,%d,%d\n",i--,--i,i--,--i); //2,1,4,1 
	printf("%d\n",i); //1 
	i=5;
	printf("%d,%d,%d,%d\n",--i,--i,--i,--i);  //1,1,1,1 
	printf("%d\n",i); //1
	i=5;
	printf("%d,%d,%d,%d\n",i--,i--,i--,i--);  //2,3,4,5 
	printf("%d\n",i); //1  
	/*由上可以总结出:--i与++i的处理相同,i--与i++的处理相同*/ 
	
	//关于printf中指向变量的指针的输出次序以及自增自减
	int *pi=&i;
	printf("%d,%d,%d,%d\n",(*pi)++,++(*pi),(*pi)++,++(*pi)); //4,4,2,2 
	printf("%d\n",i); //5 
	i=1;
	printf("%d,%d,%d,%d\n",++(*pi),++(*pi),++(*pi),++(*pi));  //5,4,3,2 
	printf("%d\n",i); //5
	i=1;
	printf("%d,%d,%d,%d\n",(*pi)++,(*pi)++,(*pi)++,(*pi)++);  //4,3,2,1 
	printf("%d\n",i); //5 	 
	/*由上可以总结出:
	  !!!!对于*pi的自增与变量i的自增时不同的
	  指针*pi无论是++(*pi)还是(*pi)++都是及时执行自增,再从右往左计算下一个输出
	  不会像变量的++i等到所有的自增执行完再输出最终的结果 
	*/
	
	//关于printf中指向数组的指针的输出次序以及自增自减
	int b[4]={1,2,3,4};
	int *p=b;
	printf("%d,%d,%d\n",*p++,*p++,*p++); //3,2,1 
	p=b;
	printf("%d,%d,%d\n",*++p,*++p,*++p); //4,3,2
	/*由上可以总结出:指向数组的指针和指向变量的指针输出类似 */ 
	
	return 0;	
}
  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值