-1

你好,我在 C++ 程序中有一个包含 25 个双精度数的数组。当我将双精度数放入数组时,它们看起来像这样 1.29839,然后当我尝试访问数组中的这个数字时,它看起来像这样 4.45053e-317。我是个新手,真的迷路了。如果有人知道为什么会发生这种情况,我们将不胜感激。

这是代码:

int main()
{
    double los[25];
    ifstream html;
    html.open("tmp");
    int count = 0;
    while(html.good())
    {
        //cout << "in\n" ;
        string line;
        getline(html, line);
        if(line.length() > 11)
        {
            string tmp = line.substr(10);
            if(tmp.length() > 3)
            {
                string cmp = tmp.substr(2,2);
                if(cmp == "lo")
                {
                    //cout << "\n" << tmp << "\n";
                    double curr = atof(tmp.substr(13).c_str());
                    los[count] == curr;
                    cout << curr << "\n";
                    count++;
                }
            }
        }
    }
    cout << count << "\n";
    for(int i=0; i<25; i++)
    {
        double curr = los[i];
        cout << curr << "\n";
    }
}
4

2 回答 2

3

问题是你没有将任何东西分配到你的数组中。线

los[count] == curr;

只是评估它们是否相等,而不是将结果存储在任何地方,因此什么也不做。将其更改为仅使用一个=.

为避免其中一些问题,请始终在启用警告的情况下进行编译(-W -Wall这是一个很好的起点)。你会得到一个警告,说这条线路什么都不做,我很确定。

于 2013-03-11T22:54:58.617 回答
0

更改los[count] == curr;los[count] = curr;

目前,这条线不像作业那样工作。

于 2013-03-11T22:56:07.817 回答