c++ - a = 0; b = (a++, a + 1) ;未定义的行为(UB)?

标签 c++ c++11 undefined-behavior

看简单的例子:

int a = 0;
int b = (a ++  ,  a + 1); // result of b is UB or well defined ?  (c++03).

这在 c++11/c++14 中有所改变?

最佳答案

结果定义明确,从 C++98 开始。逗号运算符在 a 的写入和第二次读取之间引入了一个序列点(或后来的 C++ 中的“排序前”关系),我看不出有任何其他潜在原因未定义的行为。

关于c++ - a = 0; b = (a++, a + 1) ;未定义的行为(UB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327323/

相关文章:

c++ - 解除绑定(bind)后无法绑定(bind)套接字

c++ - Rakefile规则输出生成问题

c++ - 如果 proc 则终止子进程

c++ - 正确使用工厂类的标准 move

c - extern 上的这个附加常量是 UB 吗?

c++ - 未定义、未指定和实现定义的行为

C++ - 具有结构共享/不变性的类 map 数据结构

c++ - 如何在 C++ 中做矩阵和 vector 之间的点积

c++ - 展平迭代器

c++ - 如何在没有未定义行为的情况下修改 float/double 的位?