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

问题描述 投票:0回答:2

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

我的直觉表明这在 C++03 中未定义,而在 C++11 中定义良好。我说得对吗?

c++ c++11 language-lawyer undefined-behavior sequence-points
2个回答
12
投票

我的直觉表明这在 C++03 中未定义,而在 C++11 中定义良好。

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

i

该行为在 C++11 中得到了明确定义,因为

(++i)++
相当于
(i += 1)++
+=
运算符的副作用是相对于
++
(后增量)排序的,因此行为被明确定义。


-2
投票

这是一个未定义的行为,因为

i
在两个序列点之间被修改多次。

© www.soinside.com 2019 - 2024. All rights reserved.