0

開発環境:Visual Studio 2005言語:c ++

この行を実行した後:

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と表示されます。

助けが必要!

4

1 に答える 1

0

2つの考え:

  • 参照している構成内の変数が定義されていることを確認してください。

つまり g_Frm は有効ですか? g_Frm->streamValue は有効な配列ですか? g_Frm->streamValue[0] は有効な配列とインデックス値ですか? g_Frm->streamValue[0]->dayAvgValue は有効な配列ですか?

取得しようとしている変数のチェーン内の変数のいずれかが初期化されていない場合、未定義の動作が発生します。メモリと有効なインデックス値が割り当てられていることを確認してください (一般に、0 番目の要素の場合、そこに要素が存在する限り問題はありません)。

  • 他のすべてが有効な場合は、暗黙的な型変換に関する警告があるかどうかを確認してください。32 ビットまたは 64 ビット整数値の「1」は、float/double 値の「1.0」とは実質的に異なる値です。int の世界では LSB (Least Significant Bit) は 1 ですが、float の世界では非常に小さな小数値を表します。
于 2013-02-26T02:46:09.073 に答える