C ++类型为double的变量始终将其值更改为-9,25596e + 061

时间:2011-12-26 23:13:37

标签: c++ vector double iostream visual-c++-2010-express

我有一个直线制作的2D图形。

图的边缘具有double类型的坐标。坐标值存储在名为Dot的对象中。

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

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

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

我一直在寻找算法和代码中的问题。我还没找到任何东西。

我正在使用Visual C ++ 2010 Express。我也在使用iostream和矢量库。

那么为什么第一条边的X和Y坐标会将它们的值更改为-9,25596e + 061?

2 个答案:

答案 0 :(得分:1)

好的,问题似乎出现在代码中。我还没有正确初始化...必须交换两个变量的位置才能解决问题。感谢Hans Passant和Baltram,我想到了在哪里搜索问题:从任何类型的数组调用元素时。

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

答案 1 :(得分:1)

使用程序员计算器并输入0xcccccc ...然后将其转换为十进制(基数为10)它将是类似的东西。这总意味着你在内存中有未初始化的值。 在Visual Studio的内存窗口或调试器中,您可以右键单击监视窗口,然后在弹出菜单中选择显示内存的十六进制值的选项。有时当我调试崩溃时,我这样做是为了检查原始浮点数据。