关于序列点的后增量

发布于 2024-10-15 05:14:00 字数 591 浏览 9 评论 0原文

后增量运算符什么时候影响增量?我遇到了两种意见:

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

POST 表示在任何操作之后执行操作 赋值操作。

2)更近一点,关于SO的答案(尽管C++)说:

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

那么后增量操作是否...

A) 等待直到到达序列点或

B) 在赋值运算符后发生或

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

When does the post increment operator affect the increment? I have come across two opinions:

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

POST means do the operation after any
assignment operation.

2) Closer home, an answer on SO(albeit on C++) says:

... that delays the increment
until the end of the expression
(next sequence point).

So does the post increment operation...

A) wait until a sequence point is reached or

B) happen post an assignment operator or

C) happen anytime before the sequence point?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

没︽人懂的悲伤 2024-10-22 05:14:00

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

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

全段引用:

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

The correct interpretation is C, ie. the increment happens sometime before the next sequence point, specifically the C standard (C99, 6.5.2.4, 2) says this:

The side effect of updating the stored value of the operand shall occur between
the previous and the next sequence point.

Full paragraph quotation:

The result of the postfix ++ operator is the value of the operand. After the result is
obtained, the value of the operand is incremented. (That is, the value 1 of the appropriate
type is added to it.) See the discussions of additive operators and compound assignment
for information on constraints, types, and conversions and the effects of operations on
pointers. The side effect of updating the stored value of the operand shall occur between
the previous and the next sequence point.

玩物 2024-10-22 05:14:00

无论使用增量运算符的表达式如何,后增量操作始终发生在下一个序列点之前。
请参阅此链接了解更多信息 http://en.wikipedia.org/wiki/Sequence_point

The post increment operation always occurs before the next sequence point irrespective of the expression where the increment operator is being used.
See this link for more info http://en.wikipedia.org/wiki/Sequence_point

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文