【问题标题】:Control Reaches end of non- void function控制到达非 void 函数的结尾
【发布时间】:2014-03-18 15:04:59
【问题描述】:

基本上我无法摆脱最后一个括号中的错误消息,上面写着"error control reaches end of non-void function"

// DEFINE FUNCTION is_prime() HERE
double is_prime( int j)
{
    int  imin;
    int  imax;
    for (int j = imin; j <= imax; j++)
    {
        for ( int k=2; k<=imax; k++)
        {
            for (int x=2; x<k; x++)
            {
                if (k%x ==0)
                {
                    cout<<endl;
                }
                else
                    cout<< k ;
            }

        }
    }
}

【问题讨论】:

  • 你忘了return
  • double is_prime( int j) - 这个函数希望你返回一个值,特别是一个双精度值。你没有这样做,所以函数在没有返回值的情况下结束。这就是错误消息的意思。
  • 这段代码还有很多其他问题——你可能想返回bool,而不是double,给定函数名。您还使用了 iminimax 未初始化。
  • 投反对票的人 - 没有理由就投反对票有什么好处?

标签: c++ function void


【解决方案1】:

return 语句添加到函数底部的最后一个} 之前,以返回浮点值。 此外,您应该初始化 iminimax
OR 鉴于您的函数的目的,您可以将其键入:BOOL is_prime( int j) 然后返回 TRUE或 FALSE,取决于传入的参数是否为素数。例如:

BOOL is_prime(int j)
{ 
   ...
   for ( int k=2; k<=imax; k++)
   //other code
   return TRUE;//if prime
   ...  
   return FALSE; //if not prime 
}

【讨论】:

  • 退货声明是什么意思?
  • 查看我的编辑,假设您使用的是 C/C++,当一个函数的原型是非 void 时,它打算返回一个值,并且应该编写函数来适应它。这是您收到错误消息的基本原因。该函数还有其他问题:未初始化的变量只是一个。
【解决方案2】:

你的函数有一个返回类型。你需要返回一个值。

// DEFINE FUNCTION is_prime() HERE
double is_prime( int j)
{
    int  imin;
    int  imax;
    for (int j = imin; j <= imax; j++)
    {
        for ( int k=2; k<=imax; k++)
        {
            for (int x=2; x<k; x++)
            {
                if (k%x ==0)
                {
                    cout<<endl;
                    return 1;
                }
                else
                    cout<< k ;
            }

        }
    }
}

您也可以删除返回类型,因为您似乎显示了结果:void is_prime(int j)

【讨论】:

    【解决方案3】:

    您的is_prime 函数应该返回一个双精度值! (例如return 3.0f

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 2022-01-25
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      相关资源
      最近更新 更多