我对C ++很陌生,遇到了一些我无法解释或不理解的事情。
我有一个简单的程序,它定义一个结构,然后创建一个该类型的变量,并将其作为参数传递给函数。
struct Vector3
{
float X, Y Z;
};
static void test(Vector3 x)
{
}
int main()
{
Vector3 x = { 100.0f, 100.0f, 0.0f };
test(x);
return 0;
}
在x86配置中运行时,检查测试函数中的x参数,看起来绝对像我期望的那样。 X = 100.0f,Y = 100.0f,Z = 0.0f。
但是如果我在调试器中检查参数时将其更改为x64,则得到值X = 4.23084696e-37,Y = 2.648e-43#DEN,Z = -107374176。
如果我改变测试以取代指针,那么这些值会再次变得合理。
为什么它们只有在x64中构建和运行时才有所不同?
以上说明了我遇到的问题。在我的实际代码中,我将位置向量传递给绘制精灵函数,该函数正在计算用于在open gl中绘制精灵的变换矩阵。但是,根据我传递参数的方式,似乎会导致计算不同的转换。上述情况会导致此问题还是其他问题?