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

时间:2012-08-30 19:00:53

标签: c++ standards

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

int i(1);
array_of_int[i] = i++;

此人表示会指定1,但我们无法知道它是否会在array_of_int[1]array_of_int[2],尽管visual studio和大多数编译器都在array_of_int[1]

他是对的吗?

1 个答案:

答案 0 :(得分:6)

这是未定义的行为。从字面上看,任何行为都是合法的。

禁止该行代码的段落是:

  

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

a[i]i++之间没有序列点,i中的a[i]读取不是为了确定{{1}中存储的值} i