数组[i] = i ++是否被C++标准所涵盖?

Blu*_*rin 6 c++ standards

我有一个人声称这条线不在C++标准中:

int i(1);
array_of_int[i] = i++;
Run Code Online (Sandbox Code Playgroud)

该人士表示,将指派1,但我们无法知道它是否会在array_of_int[1]array_of_int[2]虽然Visual Studio和大多数编译器都会在array_of_int[1].

他是对的吗?

Dir*_*ple 6

这是未定义的行为.字面上任何行为都是合法的.

禁止这行代码的段落是这样的:

在前一个和下一个序列点之间,对象的存储值最多只能通过表达式的计算来修改一次.此外,先前的值应该只读以确定要存储的值

之间不存在序列点a[i],并i++和读取到ia[i]不是决定什么值存储在目的ii++.