令人上头的C语言——printf函数

       今(昨)天小伙伴们在讨论一个题,我点开一看,居然是C语言的自增运算符!学C语言那会,最怕的就是指针和自增了😂看到这题,杠精之魂瞬间燃烧了起来,这题我一定要算对!不就是自增嘛,++i是先加后用,i++是先用后加,我会我会!刷地一下点进去看具体的代码
代码如下:

#include <stdio.h> 

int main(){     
	int i = 8;     
	printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i, i++, --i, i--, -i++, -i--);     
	return 0; 
}

输出的结果为:
8 8 7 8 -9 -8
问:为什么输出的第一个结果是8?

啊这。。。一下给我整不会了。咳咳😐

马上有大佬提出,printf从左往右获取参数,然后压入栈中,计算的时候再一个个从栈内取出来,所以,应该是从右往左计算的

听了大佬的建议,噢我觉得很靠谱啊。马上我又开始算,但是怎么算都有一个数字对不上

过程如下:
从右往左,我们一个个计算,是这样的:

  • -i--:输出-8,计算之后i=7;
  • -i++:输出-7,计算之后i=8;
  • i--:输出8,计算之后i=7;
  • --i:i=6,输出6;
  • i++:输出6,计算之后i=7;
  • ++i:i=8,输出8

奇怪,是哪里算错了吗,于是我找了在线编辑器来测试
在这里插入图片描述
问题出在了--i的计算上,于是我只计算到--i,不再往前计算,看看结果:
在这里插入图片描述

少了++i, i++--i与全部整体计算时的输出不同了,说明--i的输出是受整体影响的,一定还有规律没有发现

后来我找到了这篇文章,原来,在多参数输出时,前缀自增自减虽然改变了 i 值,但不会马上输出,要等全部参数都计算完成之后,才会输出(此时输出的是 i ,相当于计算时拿走了自增自减运算符,输出时只留下了 i )。于是,过程就变成了这样:

  • -i--:输出-8,计算之后i=7;
  • -i++:输出-7,计算之后i=8;
  • i--:输出8,计算之后i=7;
  • --i:i=6,未输出;
  • i++:输出6,计算之后i=7;
  • ++i:i=8
  • 参数都计算完成了,最终 i 为8。前缀自增、自减的地方开始输出,因此结果为:8 6 8 8 -7 -8

大佬也肯定了这个结论,“前缀不会马上输出”,一针见血

OK,★,°:.☆( ̄▽ ̄)/$:.°★ 。这题解决了,记录一下,以后要是又不会了,就翻出来看看。但是欠下了反汇编代码的知识点😂,知识的海洋无穷无尽,日后慢慢更吧~有一点收获就很开心啦

另:由于是C语言考题,应该是放在纯C语言环境考虑,使用的编译器参考如visual C++这样的编译器,如果放在其他编译器,结果就可能不同,比如Java下是这样的:
在这里插入图片描述

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
高性能令人上头的2D割草游戏,也被称为roguelike游戏源码,是一种基于传统roguelike游戏的变种,主要特点是玩家通过操控角色在草坪上割草,同时面临着各种挑战和难关。 这款游戏源码具有出色的性能表现,能够在各种平台上运行流畅,并且具备良好的操作体验。游戏画面采用了2D像素风格,营造了一种复古的游戏感觉,同时也让游戏文件的大小更加紧凑,使得玩家可以很方便地下载和安装游戏。 游戏的核心玩法是让玩家在规定的时间内将草坪上的草割完,随着关卡的升级,草坪的难度也会不断增加。玩家需要小心草坪上的障碍物和怪物,尽量避免被它们碰到,否则就会损失一定时间。同时,游戏还提供了一些道具和技能,玩家可以使用它们来加快割草的速度或者解决困难的情况。 此外,游戏源码还具备一些创新的功能,例如排行榜系统,玩家可以与其他玩家进行比拼,争夺割草的最佳时间记录。同时,游戏还提供了多种随机事件和关卡设计,保证了游戏的可玩性和挑战性。 总的来说,这款高性能令人上头的2D割草游戏,roguelike游戏源码给玩家带来了全新的游戏体验,不仅具备流畅的运行性能和出色的操作体验,还提供了丰富多样的玩法和创新的功能。无论是草坪割草的爱好者还是喜欢挑战的玩家,都可以在这款游戏中找到乐趣。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值