c++ - 序列点从何而来?

标签 c++ c sequence-points

我知道写类似的东西

++a = a++;

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

这些限制从何而来?如何在发现这些“问题”之前将其视为错误?

最佳答案

基本上每个语句之间有一个C++03序列点。有关详细信息,请参阅 SO C++ FAQ .有关更多信息,请参阅 C++ 标准,并记住在 C++11 标准序列点中,替换为前序后序关系。 p>

为避免出现问题,不要试图在每个表达式中做太多事情。

不要试图做编译器的工作:把它留给编译器。您的工作是编写其他人可以轻松理解的代码,即清晰的代码。多次更新和不必要地使用具有副作用的运算符与此不兼容。

提示:尽可能在任何地方添加 const

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

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

相关文章:

c++ - 在 Python3 中将 std::string 转换为 C++ 中的 PyObject

c++ - 将目标文件的所有符号编译为 Weak

c - 从 C api 附加一个命名的内存数据库

c - MinGW fprintf (vswprintf) 导致段错误

c - 解析RTP流以从松下相机获取MPEG4编解码器的I帧

c++ - 复合条件表达式中的排序

c++ - 可变参数模板参数

c++ - Xerces C++ - 加载、读取和保存,替代方案?

c - 这是否包含序列点?

c - gcc 的 -Wsequence-point 警告标志是否损坏?