后自增运算符何时影响自增?我遇到了两种意见:
1)来自http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_015.htm:
POST 表示在任何赋值操作之后执行操作。
2)更近一点,关于 SO(尽管是 C++)的答案说:
...延迟增量直到表达式结束(下一个序列点)。
后增量操作也是如此...
A)等到一个序列点到达或
B)发生赋值运算符或
C)发生在序列点之前的任何时间?
后自增运算符何时影响自增?我遇到了两种意见:
1)来自http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_015.htm:
POST 表示在任何赋值操作之后执行操作。
2)更近一点,关于 SO(尽管是 C++)的答案说:
...延迟增量直到表达式结束(下一个序列点)。
后增量操作也是如此...
A)等到一个序列点到达或
B)发生赋值运算符或
C)发生在序列点之前的任何时间?
正确的解释是C,即。增量发生在下一个序列点之前的某个时间,特别是 C 标准 (C99, 6.5.2.4, 2) 是这样说的:
更新操作数存储值的副作用应发生在前一个序列点和下一个序列点之间。
全文引用:
后缀 ++ 运算符的结果是操作数的值。得到结果后,操作数的值递增。(也就是说,将相应类型的值 1 添加到其中。)有关约束、类型和转换以及操作对指针的影响的信息,请参阅加法运算符和复合赋值的讨论。更新操作数存储值的副作用应发生在前一个序列点和下一个序列点之间。
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