这是因为
a[index++] = index = index +2;在C.看看所调用未定义行为这
从链接:
第二句说:如果将对象写入完整表达式中,则在同一表达式中对对象的任何和所有访问都必须直接参与要写入的值的计算。该规则有效地将法律表达形式限制为在修改之前先进行访问的行为。例如,允许使用旧备用i
= i + 1,因为对i的访问用于确定i的最终值。这个例子a[i] = i++之所以被禁止,是因为i的访问之一( a [i] 中的访问 )与最终存储在i中的值(在i
++中发生)无关,因此,没有很好的方法来定义-无论是出于我们的理解还是编译器的理解-访问是应该在存储增量值之前还是之后进行
。由于没有定义它的好方法,因此标准声明它是未定义的,并且可移植程序绝对不能使用此类构造。与a[i++]=i(调用UB)类似,您的表达式也调用UB。
您的表情也有类似的行为。
该行为在中已定义好
Java。



