我知道写类似
++a = a++;
不仅不可读,而且违反了c/c++序列点。
这些限制从何而来?在发现它们为错误之前,如何看待这些“问题”?
最佳答案
基本上,每个语句之间都有一个C++ 03序列点。有关更多信息,请参见SO C++ FAQ。有关更多信息,请查阅C++标准,并请记住,在C++ 11标准中,顺序点被关系之前和之后的关系所取代。
为避免出现问题,只需不要对每个表达式都做得太聪明。
不要尝试完成编译器的工作:将其留给编译器。您的工作是编写其他人可以轻松理解的代码,即清除代码。多次更新和不必要使用带有副作用的运算符与此不兼容。
提示:尽可能在各处撒上const
。
这限制了读者必须考虑的可能的状态更改。
关于c++ - 序列点从哪里来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11194530/