可以用c ++中的表达式来改变变量值

时间:2013-04-02 01:21:15

标签: c++

我有这行代码

next_step_camera_x_rotation=step_camera_x_rotation+delta_x;

我想知道step_camera_x_rotationdelta_x的价值是否被改变了

4 个答案:

答案 0 :(得分:5)

一般来说,不应该,但这并不意味着它不会。这实际上取决于对象的类型以及operator+operator=的实现方式。如果它是一个理智的实现,它不应该修改任何一个参数,但语言中没有规则来保证。

如果类型是基本类型,那么答案是添加不会更改参数。

答案 1 :(得分:1)

step_camera_x_rotationdelta_x的值如果是volatile个变量,可以在内部更改其值。

答案 2 :(得分:1)

表达式可以改变变量的值:

v = (a=3) + 3;

但是你在问题中的那个不会改变右侧的参数值

v = a + b;

此表达式不会更改ab

答案 3 :(得分:0)

由于我们在这里处理病态情况,如果一侧的值是对另一侧的值的引用,则等式右侧的值可能会改变。

E.g。如果您已声明:

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

使用预处理器可以实现类似的效果。