0

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

图形的边缘具有 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?

4

2 回答 2

1

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

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

于 2011-12-27T12:24:04.387 回答
1

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

于 2011-12-27T12:30:11.960 回答