【问题标题】:Why is this NaN为什么这是 NaN
【发布时间】:2013-04-04 19:16:55
【问题描述】:

我正在尝试运行以下代码

  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,因此在处理其余部分时跳过了数组的第一部分。

【问题讨论】:

  • 你初始化total_weekly_sales数组了吗?
  • 你能告诉我们你在哪里初始化了total_weekly_alesweekly_sales吗?你确定这些值都不是NaN吗?
  • 每次你在编程中假设一只小猫死了。
  • @BarışUşaklı 该声明具有误导性。我们应该假设更多吗?
  • 我正在尝试编写一个让小猫死掉的程序......

标签: c++


【解决方案1】:
double weekly_sales[weeks][salespersons][days];
double total_weekly_sales[weeks];

未初始化。

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

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

【讨论】:

  • 我将如何正确初始化它。为了清楚起见,我进一步定义了我的问题。
  • 如果提案进展顺利,希望 = {0.0} 能尽快发挥作用。
  • 只需添加 = { { { 0.0 } } };使其给出错误“可变大小对象'weekly_sales'可能未初始化”
  • 我发现添加weekly_sales[0][0][0]=0; total_weekly_sales[0]=0;让它工作
  • @Some guy:那是因为数组的维度不是恒定的。将int salespersons=0,weeks=0,days=5;这一行改为int const salespersons=0,weeks=0,days=5;
【解决方案2】:
double total_weekly_sales[weeks];

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

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

并打印一个未初始化的变量

cout << total_weekly_sales[0];

【讨论】:

    【解决方案3】:

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

        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];
    
                   }
                }  
             }
    
          }
    

    并使用图书馆!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-07
      • 2011-10-23
      • 2019-11-13
      • 2013-11-26
      • 2012-09-20
      • 1970-01-01
      相关资源
      最近更新 更多