Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 此代码是否依赖于函数调用顺序未定义的行为?_C++_Undefined Behavior - Fatal编程技术网

C++ 此代码是否依赖于函数调用顺序未定义的行为?

C++ 此代码是否依赖于函数调用顺序未定义的行为?,c++,undefined-behavior,C++,Undefined Behavior,我必须构建一个带有3个参数的LPoint3f,它们是dgi.get_int32()/100.0的结果。在Python中,我可以依赖调用顺序: LPoint3f(dgi.get_int32() / 100.0, dgi.get_int32() / 100.0, dgi.get_int32() / 100.0); # values are correct 在将此代码翻译为C++时,我写道: LPoint3f pos(dgi.get_int32() / 100.0, dgi.get_int32()

我必须构建一个带有3个参数的
LPoint3f
,它们是
dgi.get_int32()/100.0
的结果。在Python中,我可以依赖调用顺序:

LPoint3f(dgi.get_int32() / 100.0, dgi.get_int32() / 100.0, dgi.get_int32() / 100.0);
# values are correct
在将此代码翻译为
C++
时,我写道:

LPoint3f pos(dgi.get_int32() / 100.0, dgi.get_int32() / 100.0, dgi.get_int32() / 100.0);
// incorrect values sometimes, correct others
然而,这是可行的:

x = dgi.get_int32() / 100.0;
y = dgi.get_int32() / 100.0;
z = dgi.get_int32() / 100.0;
LPoint3f pos(x, y, z);

是代码1未定义行为?

< p> C++中函数调用的顺序未指定。如果调用get_int32()有任何副作用,即修改某些内部值,则不会得到与Python中相同的结果。代码不是未定义的,但它不会产生可靠的值。

我怀疑这是您的问题。
get_int32()
做什么?@NacibNeme它有副作用吗?不,它不应该有任何副作用。它必须有副作用,否则x y和z将是相同的。将产生可靠的非期望值