我正在阅读K&R,我遇到了一个关于表达式评估中不确定行为的例子,如
标准是否对涉及序列点时子表达式的评估顺序有任何规定?例如:
a[i]=i++
;
C99规范在$6.5.2中说:
上面来自K&R的例子在第一条语句上是正确的。请解释第二条语句为什么会失败。在前一个和下一个序列点之间,对象通过表达式的评估最多只能修改其存储值一次。此外,先前的值只能被读取以确定要存储的值。
标准是否对涉及序列点时子表达式的评估顺序有任何规定?例如:
a[i++] || b[i++]
。我知道这些是从左到右评估的,但这是否可以从上述语句中推导出来,或者是否在标准中明确说明了?
i+++++i
的问题。至于为什么赋值运算符不是序列点的特定情况,其他人也链接了一篇文章。 - Lundin