当在数组中存储双精度时,它们会变得混乱

时间:2013-03-11 22:39:54

标签: c++ arrays double

你好我在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";
    }
}

2 个答案:

答案 0 :(得分:3)

问题是你没有在阵列中分配任何东西。这条线

los[count] == curr;

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

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

答案 1 :(得分:0)

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

目前,该行不像作业那样工作。