是(++ i)++未定义的行为?

时间:2010-12-03 15:29:44

标签: c++ c++11 language-lawyer undefined-behavior sequence-points

(++i)++未定义的行为?在检索增量对象以进行后缀增量操作后,是否可能发生前缀增量的副作用?这对我来说似乎很奇怪。

我的直觉是,这在C ++ 03中是未定义的,在C ++ 11中定义良好。我是对的吗?

2 个答案:

答案 0 :(得分:11)

  

我的直觉是,这在C ++ 03中未定义,在C ++ 0x中定义良好。

是的,你是对的。 C ++ 03中的行为未定义,因为您尝试在两个序列点之间多次修改i

行为在C ++ 0x中定义良好,因为(++i)++等同于(i += 1)+++=运算符的副作用相对于++(后增量)排序,因此行为定义明确。

答案 1 :(得分:0)

这是一个未定义的行为,因为i在两个序列点之间被多次修改。