我有这行代码可以在C表达式++改变一个变量值
next_step_camera_x_rotation=step_camera_x_rotation+delta_x;
,我想知道如果step_camera_x_rotation
或delta_x
值被改变
我有这行代码可以在C表达式++改变一个变量值
next_step_camera_x_rotation=step_camera_x_rotation+delta_x;
,我想知道如果step_camera_x_rotation
或delta_x
值被改变
表达可以改变一个变量的值:
v = (a=3) + 3;
但一个,你必须在这个问题上的右侧是不会改变的参数值
v = a + b;
无论a
也不b
会被这个表达改变了。
通常,不应 ,但这并不意味着它不会。这实际上取决于对象的类型以及如何实现operator+
和operator=
。如果它是一个理智的实现,它不应该修改任何参数,但是在语言中没有规定来保证这一点。
如果类型是基本类型,那么答案是添加不会改变参数。
+1直接切割C++的悲伤,粘性内脏。 :) –
由于我们在这里处理病例,如果一侧的值是对另一侧的值的引用,则方程右侧的值可能会改变。
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
您可以使用预处理器实现类似的效果。
他们*可*是。取决于类型以及如何实现'operator +'过载。 – chris
只有当'+'或'='运算符已被重载为任何类型。除了'next_step_camera_x_rotation'之外,默认的运算符不会改变任何值。 – Dave
@Dave,忘了'operator ='。接得好。 – chris