2013-02-26 64 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