C++ 输出GLfloat值会给出正确的值,但将其存储在另一个变量中并输出该变量会给出错误的值

C++ 输出GLfloat值会给出正确的值,但将其存储在另一个变量中并输出该变量会给出错误的值,c++,opengl,C++,Opengl,我正在使用freeglut和glew进行一个项目,尽管我认为这与我的问题无关。第一行输出我期望的值-1, -1. 注意:mikesVertices[0].x和mikesVertices[0].y属于GLfloat类型 std::cout << "(" << mikesVertices[0].x << ", " << mikesVertices[0].y << ")" << endl; 然而,紧跟其后的这两行 GLfloat

我正在使用freeglut和glew进行一个项目,尽管我认为这与我的问题无关。第一行输出我期望的值-1, -1. 注意:mikesVertices[0].x和mikesVertices[0].y属于GLfloat类型

std::cout << "(" << mikesVertices[0].x << ", " << mikesVertices[0].y << ")" << endl;
然而,紧跟其后的这两行

GLfloat x = mikesVertices[0].x;
std::cout << "x: " << x << endl;
为x输出不正确的值。1.92749e-039

我之所以尝试这样做,是因为我想将值传递给函数,但函数也得到了错误的值。任何帮助都将不胜感激

编辑:mikesVertices是一个指向Angel编写的vec2对象的指针,我已经展示了其中一些我认为必要的部分

struct vec2 {

GLfloat  x;
GLfloat  y;

//
//  --- Constructors and Destructors ---
//

vec2( GLfloat s = GLfloat(0.0) ) :
x(s), y(s) {}

vec2( GLfloat x, GLfloat y ) :
x(x), y(y) {}

vec2( const vec2& v )
{ x = v.x;  y = v.y;  }

//
//  --- Insertion and Extraction Operators ---
//

friend std::ostream& operator << ( std::ostream& os, const vec2& v ) {
return os << "( " << v.x << ", " << v.y <<  " )";
}

friend std::istream& operator >> ( std::istream& is, vec2& v )
{ return is >> v.x >> v.y ; }

//
//  --- Conversion Operators ---
//

operator const GLfloat* () const
{ return static_cast<const GLfloat*>( &x ); }

operator GLfloat* ()
{ return static_cast<GLfloat*>( &x ); }

我们可以看到mikesVertices的数据结构以及变量的声明吗?请发布一个。而且,GLfloat几乎可以肯定是float的typedef,所以这与OpenGL没有任何关系。我无法复制它。你能提供编译器和选项吗?首先猜测:mikesVertices已经被解除分配,它只是碰巧仍然有正确的值,直到那个复杂的、使用了一点堆栈和堆std::cout的东西被释放called@ChristianStieber似乎是对的,在使用变量进行临时修复之前,我将只存储该变量。谢谢你的帮助。我们可以看看mikesVertices的数据结构,以及变量的声明吗?请发布一个。而且,GLfloat几乎可以肯定是float的typedef,所以这与OpenGL没有任何关系。我无法复制它。你能提供编译器和选项吗?首先猜测:mikesVertices已经被解除分配,它只是碰巧仍然有正确的值,直到那个复杂的、使用了一点堆栈和堆std::cout的东西被释放called@ChristianStieber似乎是对的,在使用变量进行临时修复之前,我将只存储该变量。谢谢你的帮助。