我知道写类似

++a = a++;

不仅不可读,而且违反了c/c++序列点。

这些限制从何而来?在发现它们为错误之前,如何看待这些“问题”?

最佳答案

基本上,每个语句之间都有一个C++ 03序列点。有关更多信息,请参见SO C++ FAQ。有关更多信息,请查阅C++标准,并请记住,在C++ 11标准中,顺序点被关系之前和之后的关系所取代。

为避免出现问题,只需不要对每个表达式都做得太聪明。

不要尝试完成编译器的工作:将其留给编译器。您的工作是编写其他人可以轻松理解的代码,即清除代码。多次更新和不必要使用带有副作用的运算符与此不兼容。

提示:尽可能在各处撒上const

这限制了读者必须考虑的可能的状态更改。

关于c++ - 序列点从哪里来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11194530/

10-09 08:56