在C++标准中的一个有关问题

在C++标准中的一个问题
在International   Standard   ISO/IEC14882   Programming   Language   C++中,第五章开始的第四段中不是很明白。它给的示例如下:
i   =   v[i++];                 //   the   behavior   is   unspecified
i   =   7,   i++,   i++;       //   i   becomes   9
i   =   ++i   +   1;               //   the   behavior   is   unspecified
谁能够结合第五章开始的第四段讲解一下为什么上面的例子会有这样的结果,为什么第一和第三个例子unspecified,而第二个就可以

多谢

------解决方案--------------------
google:
i=i++ 序列点
------解决方案--------------------
第二个按照规则走的,从左到右运算。
其它两个在我看到的标准中是undefined
Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions,
and the order in which side effects take place, is unspecified.58) Between the previous and next sequence point a
scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior
value shall be accessed only to determine the value to be stored. The requirements of this paragraph shall be met for
each allowable ordering of the subexpressions of a full expression; otherwise the behavior is undefined. [ Example:
i = v[i ++]; / / the behavior is undefined
i = 7 , i++ , i ++; / / i becomes 9
i = ++ i + 1; / / the behavior is undefined
i = i + 1; / / the value of i is incremented

因为在一些体系下,比如arm,像i = ++ i + 1和i = v[i ++]; 这样的语句都可以使用一条指令完成,于是这种行为编译器就无法预知,定义为undefined行为更准确些.

标准中没有明确定义的行为自然就是又问题的,1和3就是例子