维基百科说序列点在 C++11 中已被弃用。这意味着什么?这是否意味着由于序列点导致的未定义行为没有影响?
问问题
1886 次
3 回答
10
术语“序列点”的一个主要问题是它暗示了一种从未存在过的绝对序列。考虑表达式a = (b(),c()) + d();
There is a sequence point between b()
and c()
,但这并不意味着其他所有内容都可以描述为明显之前c()
或明显之后b()
。b()
, c()
, 和,可以按,或d()
的顺序计算。“序列”点术语并没有真正说明这一点,但较新的术语确实如此。bcd
bdc
dbc
于 2011-11-02T13:14:19.160 回答
9
为了提供更清晰的解释,不推荐使用术语“序列点”。C++ 语言不应该改变。
你可以在这里找到更多信息
于 2010-04-07T08:10:33.900 回答
8
短语“sequence point”已被弃用,取而代之的是更明确的短语,如“sequenced before”。序列点已经很难理解了。添加多线程使任何人几乎都无法处理它们,因此(至少大部分)消除了它们以支持其他措辞。
于 2010-04-07T14:12:05.447 回答