关于序列点的后增量

时间:2011-02-01 17:05:29

标签: c post-increment sequence-points

后增量运算符何时影响增量?我遇到了两个意见:

1)来自http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_015.htm

  

POST意味着在任何操作之后执行操作   任务操作。

2)言归正传,answer on SO(尽管在C ++上)说:

  

...延迟增量   直到表达结束       (下一个序列点)。

后期增量操作也是如此......

A)等到达到序列点或

B)在分配操作员或

之后发生

C)在序列点之前的任何时间发生?

2 个答案:

答案 0 :(得分:5)

正确的解释是C,即。增量发生在下一个序列点之前的某个时间,特别是C标准(C99,6.5.2.4,2)说:

  

更新操作数存储值的副作用应发生在   上一个和下一个序列点。

全段引文:

  

postfix ++运算符的结果是操作数的值。结果之后   获得后,操作数的值递增。 (即,适当的值1   类型被添加到它。)参见加法运算符和复合赋值的讨论   有关约束,类型和转换以及操作的影响的信息   指针。更新操作数的存储值的副作用应发生在   上一个和下一个序列点。

答案 1 :(得分:0)

后增量操作总是在下一个序列点之前发生,而与使用增量运算符的表达式无关。 有关详情http://en.wikipedia.org/wiki/Sequence_point

,请参阅此链接