2013-02-26 66 views
0

开发环境:Visual Studio 2005中 语言:C++vc.net:不能设置双变量的值

运行此行之后:

g_Frm->streamValue[0].dayAvgValue[0] = 1 

我已经设置g_Frm->streamValue[0].dayAvgValue[0] = 1;
g_Frm->streamValue[0].dayAvgValue[0] is type of double

但是在监视窗口中,当变量初始化时它仍然显示为-6.2774 ... e + 066。

需要帮助!

回答

0

两个想法:

  • 检查,在你引用的结构各变量的定义。

即g_Frm是否有效?是g_Frm-> streamValue一个有效的数组?是g_Frm-> streamValue [0]有效的数组和索引值?是g_Frm-> streamValue [0] - > dayAvgValue有效数组吗?

如果您尝试访问的变量链中的任何变量未初始化,您将遇到一些未定义的行为。确保你已经分配了内存和有效的索引值(通常,对于第0个元素,只要有元素就可能是好的)。

  • 如果一切都有效,请检查是否有关于隐式类型转换的警告。 “1”的32或64位整数值与浮点/双精度值“1.0”的值完全不同。在int世界中,您的LSB(最低有效位)的含义是1,但在浮点世界中,它代表极小的小数值。
+0

谢谢,Maximus。我检查了变量,都是有效的。即使我将varialbe设置为0或0.0。它仍然一直被视为-6.2774 ... e + 066 – bolo 2013-02-26 03:11:04

+0

你可以发布相关数据结构的声明吗?如果我能看到整个图像,我可能会有更多的帮助:-)。 – 2013-02-26 03:39:59

+0

下面是声明的:struct流 \t { \t \t CString的endpoint_name; // \t \t INT日期[31]; \t \t CString ipAddress; \t \t双dayAvgValue [31]; // \t \t \t } streamValue [MAXSTREAMNUM],streamValue_maxlatency [MAXSTREAMNUM],streamValue_avglatency [MAXSTREAMNUM],streamValue_jitter [MAXSTREAMNUM],streamValue_packetlost [MAXSTREAMNUM]; // – bolo 2013-02-26 04:17:01