写在前面:
由于本人非计算机专业,所以本文在一些专业用语表述方面可能不够严谨,甚至可能出现一些因个人理解产生的偏差,敬请读者谅解。我也将不断努力,尽量让自己的表述规范起来。
写这一篇关于++/--运算符的文章,直接原因是最近要给大一同学做C语言串讲,在重新拾起一年前的知识时,发现好多东西已经模糊甚至是淡忘了,只能从头开始一步一步调试,总结。另外其实大一的时候本来想好好总结一下关于这个的东西,但是因为当时还没有在CSDN开号,所以过了一段时间就忘记了😂。不过现在来写,从某种意义上来说,或许会比当时更好吧。
2022/10/10 更新的忠告
通过阅读《C++ Primer Plus》,我发现里面对连续使用的自增、自减表达式是这样描述的:
递增运算符和递减运算法都是漂亮的小型运算符,不过千万不要失去控制,在同一条语句中对同一个值递增或递减多次。问题在于,规则“使用后修改”和“修改后使用”可能会变得模糊不清,也就是说,在不同系统上将会生成不同结果。
所以,如果不是考试中某些老师故意刁难的话,推荐大家最好还是尽量避免在实际编程过程中使用上述提到的语句。有时无意义的炫技可能会把自己害死。
正文
当很多同学在C语言相关考试题中看到这样的表达式,估计都会感觉比较崩溃:
它的输出结果是(在VS2019和DEVC++中的结果):
我记得自己当时学这部分内容时,老师是把它作为一个极端的例子来讲的。虽然当时经常翘课(QAQ),也没好好听到底原理是什么,但是类似这样的在printf中放一大堆++作为参数的题还是给我留下了难以磨灭的印象。
当然,上面这个例子其实挺简单的,像下面这样理解就行:
前两个+号跟着前面的x走,形成一个x++的后置自增表达式,对于这样的表达式的操作,上课时老师一般会说是先把x的值代入进行计算,算完之后再进行一步x = x + 1,就像下面这样:
这个对简单的表达式(只含有一个++运算符)固然是很容易理解并计算的,但是如果一个表达式中有不止一个++运算符(注意,是表