双变量的C++变量总是将它们的值改为-925596E + 061。

双变量的C++变量总是将它们的值改为-925596E + 061。,c++,vector,double,iostream,visual-c++-2010-express,C++,Vector,Double,Iostream,Visual C++ 2010 Express,我有一个由直线组成的二维图形 地物的边具有来自类型double的坐标。坐标值存储在一个名为点的对象中 与行相关的数据是行升序或降序,a*X+b==Y等中的a和b的值存储在称为行的对象中。Line类还有两个点对象用于每行的两端。Line类还有2个函数/方法和一个构造函数。构造函数没有参数。第一个函数/方法没有参数,第二个有参数。创建这两个函数/方法是为了在必要时自动更改所有数据 启动程序后,我插入图形的边数和边的坐标。后来,程序必须在屏幕上写下每一行的所有内容。无论我插入什么坐标,第一个点的坐标是

我有一个由直线组成的二维图形

地物的边具有来自类型double的坐标。坐标值存储在一个名为点的对象中

与行相关的数据是行升序或降序,a*X+b==Y等中的a和b的值存储在称为行的对象中。Line类还有两个点对象用于每行的两端。Line类还有2个函数/方法和一个构造函数。构造函数没有参数。第一个函数/方法没有参数,第二个有参数。创建这两个函数/方法是为了在必要时自动更改所有数据

启动程序后,我插入图形的边数和边的坐标。后来,程序必须在屏幕上写下每一行的所有内容。无论我插入什么坐标,第一个点的坐标是X=-925596e+061和Y=-925596e+061。但是其他点有我最初插入的坐标

有一行我添加到向量中的次数与图形的边数相同,之后我开始通过在运行的程序中插入值来更改图形边缘坐标的值。第三个操作是调用创建行的函数/方法,它计算关于该行的其余数据。程序的第四步是在屏幕上写入关于每一行的数据

我一直在搜索算法和代码中的一个问题。我什么也没找到

我使用Visual C++ 2010 Express。我也在使用iostream和vector库


那么为什么第一条边的X和Y坐标将其值更改为-925596E+061?

好的,问题似乎出在代码中。我一直没有初始化对。。。为了解决这个问题,我们不得不交换两个变量的位置。多亏了Hans Passant和Baltram,我找到了寻找问题的地方:从任何类型的数组调用元素时


是的,做这些事情时一定要小心。

使用程序员计算器并输入0xCCCC。。。然后把它转换成以10为底的十进制数,它会是类似的。这始终意味着您在内存中有未初始化的值。
在visual studio中的内存窗口或调试器中,您可以右键单击“监视”窗口,并在弹出菜单中选择显示内存十六进制值的选项。有时在调试崩溃时,我会这样做以检查原始浮点数据。

是否有一些代码可以查看?请发布一些代码…这是在Visual Studio中调试项目时可能遇到的神奇值。这是为了让你走哇!这里有点不对劲,基努风格。该双精度的基础十六进制值为0xCCCC。在调试生成中初始化局部变量的值。初始化变量以修复。一个小测试程序表明双精度值-9.25596e+061在内存中表示为f3 1f 26 29 cc。4个0xcc字节的序列看起来可疑。是否有什么东西正在破坏包含这些数字的内存?设置@HansPassant的注释后进行编辑,-9.2559600000E+61为f3 1f 26 29 cc-9.25596313493e+61为cc。可能问题在于std::vector使用基于0的索引,而您假设第一个元素位于索引1?使用程序员计算器并输入0xCCCC。。。然后把它转换成以10为底的十进制数,它会是类似的。不可以。您必须转换为IEEE 754双精度格式,而不是十进制格式。