【问题标题】:"if" function gets "control may reach end of non-void function" error in C“如果”函数在 C 中得到“控制可能到达非无效函数的结尾”错误
【发布时间】:2018-06-17 00:16:56
【问题描述】:

在这个函数中,我尝试根据不同的 char* 输入返回不同的 int 值。但我收到错误“控制可能到达非无效函数的结尾”。我该如何解决?

// Converts a fraction formatted as X/Y to eighths
int duration(char* fraction)
{
    if (strcmp(fraction, "1/8") == 0)
    {
        return 1;
    }
    else if (strcmp(fraction, "1/4") == 0)
    {
        return 2;
    }
    else if (strcmp(fraction, "3/8") == 0)
    {
        return 3;
    }
    else if (strcmp(fraction, "1/2") == 0)
    {
        return 4;
    }
}

【问题讨论】:

  • 如果fraction 不是这些,返回什么?
  • string 是什么?
  • @wildplasser — 可能来自 cs50.htypedef char *string; 用于 CS50 课程。一个猜测,但不是一个疯狂的猜测。
  • @wildplasser,乔纳森猜对了。

标签: c if-statement compiler-errors conditional-statements return-value


【解决方案1】:

当这些条件都不正确时,您必须创建一个默认返回值 ,尝试在最后加上return -1

..
else if (strcmp(fraction, "1/2") == 0)
{
    return 4;
}else{
    return -1;
}
}

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2020-10-31
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多