【发布时间】:2012-02-10 20:43:25
【问题描述】:
可能重复:
How do we explain the result of the expression (++x)+(++x)+(++x)?
Undefined Behavior and Sequence Points
我有问题,当代码
U = C + C++;
以不同的方式运行标准类型和我自己的类型。 我有一个示例http://ideone.com/4S1uA,其中我的 int 和我的类 Int 有不同的值,这应该代表真正的 Int 的工作方式。
是否有可能使我的类的行为方式与标准 int 的工作方式相同?这段代码有未定义的行为吗?
为什么它是 undefiend 行为? C++ 有一个操作优先级,所以应该首先评估 c++,因为它改变了 a 的值,所以作为第一个参数的添加应该传递 new a 的值,第二个是旧值。它适用于 Int 类,但不适用于标准 int。
【问题讨论】:
-
是的,这是未定义的行为。我会让其他人参考标准等来创建答案。
-
是的,它是 UB,因为不确定是先评估
C还是C++。