为什么这是NaN

时间:2013-04-04 19:16:56

标签: c++

我试图运行以下代码

  int salespersons=0,weeks=0,days=5;

  double weekly_sales[weeks][salespersons][days];
  double total_weekly_sales[weeks];


for(int w=0; w < weeks;w++)
  {
     for(int d =0; d < days; d++)
     {  

        for(int s=0; s < salespersons; s++)
        {

           {
              total_weekly_sales[w]+=weekly_sales[w][s][d];
              total_overall_weekly_sales[s]+= weekly_sales[w][s][d];

           }
        }  
     }

  }

当我只跑...时

cout << total_weekly_sales[0];

我得到NaN因此在处理其余部分时跳过数组的第一部分。

3 个答案:

答案 0 :(得分:5)

double weekly_sales[weeks][salespersons][days];
double total_weekly_sales[weeks];

未初始化。

编辑:这是你应该如何初始化它们:

double weekly_sales[weeks][salespersons][days] = { { { 0.0 } } };

答案 1 :(得分:2)

double total_weekly_sales[weeks];

total_weekly_sales[w]+=weekly_sales[w][s][d];

您正在添加一个未初始化的变量。

打印未初始化的变量

cout << total_weekly_sales[0];

答案 2 :(得分:1)

您尝试使用代码并初始化所有变量

    int weeks=2,salepersons=3,days=1;

        double weekly_sales[weeks][salespersons][days];
          double total_weekly_sales[weeks];

    for(int w=0; w < weeks;w++)
      {
         for(int d =0; d < days; d++)
         {  
        for(int s=0; s < salespersons; s++)
        {

           {
              total_weekly_sales[w]=2;
              weekly_sales[w][s][d]=1;

           }
        }  
     }

  }


    for(int w=0; w < weeks;w++)
      {
         for(int d =0; d < days; d++)
         {  

            for(int s=0; s < salespersons; s++)
            {

               {
                  total_weekly_sales[w]+=weekly_sales[w][s][d];
                  total_overall_weekly_sales[s]+= weekly_sales[w][s][d];

               }
            }  
         }

      }

使用图书馆!!!