xcode 我的子程序不能用C语言运行

stszievb  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(224)

我用C语言编写了一个子程序,用Xcode计算一个部分函数,但它不起作用。
我知道“return”语句有很多错误,但我找不到一种方法来改善它。
我用“return(result * 1)”和“return(result = result)”表示return,把每个函数放在返回括号之间,比如“return(result = pow(x,5)+ pow(y,3));“但没有一个奏效。
你能告诉我怎么做才对并解释原因吗?

#include <stdio.h>
#include <math.h>

double
funmath(int x, int y)
{
    double result;
    
    if( x >= 50 )
        result = pow(x,5) + pow(y,3);
    else if( x >= 40 )
        result = 5 * x + y + 9;
    else if( x >= 0 )
        result = x / 5 + 7 * y;
    else
    
    return(result);
}
iibxawm4

iibxawm41#

你要求一个解决方案和一个解释。

解决方案

#include <stdio.h>
#include <math.h>

double
funmath(int x, int y)
{
    double result = -42; //You can use some other default value instead if you prefer
    
    if( x >= 50 )
        result = pow(x,5) + pow(y,3);
    else if( x >= 40 )
        result = 5 * x + y + 9;
    else if( x >= 0 )
        result = x / 5 + 7 * y;
    
    return(result);
}

说明

你的double函数在任何情况下都需要returnsomething。您的函数具有以下情况:

  • if (x >= 50):将result设置为某个值,但不对return进行任何操作
  • else if( x >= 40 ):将result设置为某个值,但不对return进行任何操作
  • else if( x >= 0 ):将result设置为某个值,但不对return进行任何操作
  • else:不初始化result,但返回它

让我们不要忘记else if意味着if和比当前条件更早的else if的条件都不为真,但当前else if的条件为真,让我们不要忘记else意味着“以上都不为真”。由于您在else中有return,因此在前三种情况下,您没有return任何东西,因此,您违反了语言的最佳实践。这就是为什么,解决方案是return的东西,不管是什么。

相关问题