i++ + i++的意义
看了“[置顶] [推荐] C,C++表达式求值顺序 裘老的解释。 [问题点数:300分]”帖子,也说两句。
1、这个东西,教师需不需要讲?很多跟帖说“讨厌这些毫无意义的东西”。这是一个误解。当你的老师讲解这些东西时,当用人单位考这个东西时,他们希望你知道:在C/C++ 语言中,由于没有规定上述表达式的求值顺序,因而你不得写那些代码——而不是相反。
2、如果问你语法和语义的区别, i++ + i++就是一个很好的例子。应该没有人说“语法和语义的区别”毫无意义吧。
3、i++ + i++这个东西无定义,意味着编译器可以自由的处理。因而此时“迷信编译器、调试器、运行结果”都是错误的认识。你无法穷尽所有的编译器、调试器以保证你的语意正确执行。
4、副作用是一个重要而又常用的概念。不要倒洗澡水把澡盆中的小孩子也泼了。
5、该帖子的核心在最后。
“这里讨论的是语言,而不是某个实现...后记:去年参加一个学术会议,看到有同行写文章讨论某个C系统里表达式究竟按什么顺序求值,并总结出一些“规律”。从讨论中了解到某“程序员水平考试”出了这类题目。这使我感到很不安...发现许多专业课教师也对这一基本问题也不甚明了,更觉得问题确实严重。
后后记:4年多过去了,许多新的和老的教科书仍然在不厌其烦地讨论在C语言里原本并无意义的问题(如本文所指出的)。希望学习和使用C语言的人不要陷入其中。”