【问题标题】:function keeps returning NaN [closed]函数不断返回 NaN [关闭]
【发布时间】:2012-01-01 14:53:33
【问题描述】:

大家好,我知道 NaN(让我说我知道首字母缩略词代表 Not a Number)是什么,但我不明白 C++ 为什么返回它 - 以下是数学常数 e 的近似值 - 使用调试器时函数评估良好,它在写入控制台时返回 NaN

感谢您的反馈

double Factorial(int k)
{
    if(k == 0)
        return 1;

    int value = 1;
    for(int i = k; i > 0; i--)
        value *= k;
    return value;
}

double e(int p)
{
    double value = 0.0;

    for(int i = 0; i < p; i++)
    {
        value += 1/Factorial(i);
    }
}

【问题讨论】:

  • 您的 e 函数中缺少 return 语句。
  • p = 1 结果的测试值 = NaN
  • 您发布的代码不合法​​。请发布一个最小、完整和正确的示例。
  • 在 e 中的 for 循环下方,您可能应该有类似 return value; 的内容。
  • 感谢大家 - 现在我觉得自己像个真正的白痴 - 过去十分钟我一直在看这段代码,但不知道是怎么回事!谢谢!

标签: c++ math nan


【解决方案1】:

你没有在你的 e 函数中返回值。

【讨论】:

  • 这应该是评论,而不是回答。
【解决方案2】:

你忘了在 e 的末尾返回值。我不知道 c++ 何时停止对丢失返回发出警告。

【讨论】:

  • C++ 从不需要对未能返回值的函数进行诊断。但是编译器可能正在发出警告,它们只是被忽略了。
猜你喜欢
  • 2019-02-22
  • 2019-09-28
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多