递增运算符和"未定义的行为"

时间:2016-08-15 16:45:03

标签: c language-lawyer

comp.lang.c FAQ中所述,C标准规定:

  

在前一个和下一个序列点之间,一个对象应该具有它   通过表达式的评估,最多修改一次存储值。   此外,只能访问先前值以确定   值存储。

但是,(now deleted) article表示a = ++b + ++c;未定义。有人可以解释为什么这是未定义的行为?

1 个答案:

答案 0 :(得分:11)

如果表达式a中涉及的对象(bca = ++b + ++c;)不同,则表达式已明确定义。

也许,作者意味着两次使用相同的变量,例如a = ++b + ++b;。我只能推测。但是在给定的表达中没有任何不确定性。