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

时间:2014-01-24 07:58:20

标签: 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中有所改变吗?

1 个答案:

答案 0 :(得分:28)

结果定义明确,自C ++ 98以来。逗号运算符在a的写入和第二次读取之间引入了一个序列点(或后面的C ++序列中的“按顺序排序”),并且我没有看到任何其他可能导致未定义行为的原因。