首页 > TAG信息列表 > sequence-points
c – 赋值运算符中的序列点
让我们以具体的复合赋值运算符^ =为例. This stackoverflow page表示在评估^ =之后可能尚未对左操作数进行修改,因此使得代码a ^ = b ^ = a ^ = b未定义的行为.但事实似乎并非如此.该标准在5.17 [expr.ass]中说明了这一点 In all cases, the assignment is sequenced after the vc / c中未定义的行为:i i vs i i [复制]
参见英文答案 > Why are these constructs using pre and post-increment undefined behavior? 14个 想象一下,我们有以下代码: int i = 1; int j = i++ + ++i; 我知道这是一个未定义的行为,因为在分号之c – 返回对象的函数调用和该对象上的方法调用之间是否存在序列点?
如果我写f(x) – > g(args,…)我可以依赖于f(x)之后的序列点来评估args,…?我可以通过两种方式看到论点: >§1.9.17“当调用函数时(无论函数是否为内联函数),在评估函数体中任何表达式或语句之前发生的所有函数参数(如果有)之后都有一个序列点在复制返回值之后和执行函数之外的任何表