我有这行代码
next_step_camera_x_rotation=step_camera_x_rotation+delta_x;
我想知道 or 的值是否step_camera_x_rotation
被delta_x
改变了
我有这行代码
next_step_camera_x_rotation=step_camera_x_rotation+delta_x;
我想知道 or 的值是否step_camera_x_rotation
被delta_x
改变了
一般来说,它不应该,但这并不意味着它不会。这实际上取决于对象的类型以及实现方式operator+
和operator=
实现方式。如果它是一个健全的实现,它不应该修改任何一个参数,但是语言中没有规则可以保证这一点。
如果类型是基本类型,那么答案是添加不会改变参数。
如果它们是变量,则step_camera_x_rotation
和的值可以在内部更改它们的值。delta_x
volatile
表达式可以改变变量的值:
v = (a=3) + 3;
但是您在问题中拥有的那个不会改变右侧参数的值
v = a + b;
这个表达式既a
不会也b
不会改变。
由于我们在这里处理的是病理情况,因此如果一侧的值是对另一侧的值的引用,则等式右侧的值可能会发生变化。
例如,如果您已声明:
int step_camera_x_rotation = 1;
int delta_x = 2;
int &next_step_camera_x_rotation = delta_x; // you'd be crazy to do this
next_step_camera_x_rotation=step_camera_x_rotation+delta_x; // delta_x just changed
您可以使用预处理器实现类似的效果。