4.1 为什么这样的代码:  a[i] = i++; 不能工作?

子表达式 i++ 有一个副作用 --- 它会改变 i 的值 --- 由于  i 在同一表达式的其它地方被引用, 这会导致无定义的结果, 无从判断该引用(左边的 a[i] 中)是旧值还是新值。(注意, 尽管 在 K&R 中建议这类表达式的行为不确定, 但 C 标准却强烈声明它是无 定义的, 参见问题 11.32

参考资料: [K&R1, Sec. 2.12]; [K&R2, Sec. 2.12]; [ISO, Sec. 6.3]; [H&S, Sec. 7.12 pp. 227-9]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)