我知道写类似的东西
++a = a++;
不仅不可读而且违反了c/c++序列点。
这些限制从何而来?如何在发现这些“问题”之前将其视为错误?
最佳答案
基本上每个语句之间有一个C++03序列点。有关详细信息,请参阅 SO C++ FAQ .有关更多信息,请参阅 C++ 标准,并记住在 C++11 标准序列点中,替换为前序和后序关系。 p>
为避免出现问题,不要试图在每个表达式中做太多事情。
不要试图做编译器的工作:把它留给编译器。您的工作是编写其他人可以轻松理解的代码,即清晰的代码。多次更新和不必要地使用具有副作用的运算符与此不兼容。
提示:尽可能在任何地方添加 const
。
这限制了读者必须考虑的可能的状态变化。
关于c++ - 序列点从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194530/