关于C语言中的前置与后置自增++/自减--运算符在表达式中求值的规律解析

写在前面:

        由于本人非计算机专业,所以本文在一些专业用语表述方面可能不够严谨,甚至可能出现一些因个人理解产生的偏差,敬请读者谅解。我也将不断努力,尽量让自己的表述规范起来。

        写这一篇关于++/--运算符的文章,直接原因是最近要给大一同学做C语言串讲,在重新拾起一年前的知识时,发现好多东西已经模糊甚至是淡忘了,只能从头开始一步一步调试,总结。另外其实大一的时候本来想好好总结一下关于这个的东西,但是因为当时还没有在CSDN开号,所以过了一段时间就忘记了😂。不过现在来写,从某种意义上来说,或许会比当时更好吧。


2022/10/10 更新的忠告

        通过阅读《C++ Primer Plus》,我发现里面对连续使用的自增、自减表达式是这样描述的:

递增运算符和递减运算法都是漂亮的小型运算符,不过千万不要失去控制,在同一条语句中对同一个值递增或递减多次。问题在于,规则“使用后修改”和“修改后使用”可能会变得模糊不清,也就是说,在不同系统上将会生成不同结果

        所以,如果不是考试中某些老师故意刁难的话,推荐大家最好还是尽量避免在实际编程过程中使用上述提到的语句。有时无意义的炫技可能会把自己害死。


正文

当很多同学在C语言相关考试题中看到这样的表达式,估计都会感觉比较崩溃:

它的输出结果是(在VS2019和DEVC++中的结果):

 我记得自己当时学这部分内容时,老师是把它作为一个极端的例子来讲的。虽然当时经常翘课(QAQ),也没好好听到底原理是什么,但是类似这样的在printf中放一大堆++作为参数的题还是给我留下了难以磨灭的印象。

当然,上面这个例子其实挺简单的,像下面这样理解就行:

x+++x\rightarrow (x++)+x

前两个+号跟着前面的x走,形成一个x++的后置自增表达式,对于这样的表达式的操作,上课时老师一般会说是先把x的值代入进行计算,算完之后再进行一步x = x + 1,就像下面这样:

x++\rightarrow x;\quad x = x+1

这个对简单的表达式(只含有一个++运算符)固然是很容易理解并计算的,但是如果一个表达式中有不止一个++运算符(注意,是

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值