【问题标题】:Beginner C: error: control reaches end of non-void function?初学者 C:错误:控制到达非 void 函数的结尾?
【发布时间】:2013-10-29 21:50:04
【问题描述】:

我正在尝试做一个贪心算法,我得到了这个错误:

greedy2.c:27:1: error: control reaches end of non-void function
      [-Werror,-Wreturn-type]
}
^
1 error generated.

使用此代码:

int man(int argc, char* argv[])
{

  float amount;
  do
    {
      printf("Input dollar amount owed:\n");
      amount = GetFloat();
    }
  while (amount <= 0);    
  int coins = 0;
  while (amount >= 0.25);
  {
    amount = amount - 0.25;
    coins++;
  }
  printf("Number of coins to use: %d\n", coins);

}

我的花括号出了什么问题,我该如何解决?

【问题讨论】:

  • 我要冒个险,猜你的编译器不喜欢int man。请改用int main
  • 可能是你拼错了main
  • @AdrianJandl 从技术上讲,编译器会对int man 非常满意(当然,当它实际返回int 时)。然而,当没有main 时,链接器会不太高兴。
  • 有 10 个相关问题与完全相同的错误消息。您是想告诉我们他们都没有回答您的问题吗?

标签: c


【解决方案1】:

你的大括号没有问题。问题是您将 main 声明为返回 int.. 但您没有返回任何内容

如果您使用编译器标志-Wall 进行编译.. 当您没有从您定义为返回的函数中返回某些内容时,您的编译器会报错..

只需添加:

  return 0; // before the last bracket

还有它的int main(int argc, char* argv[]){ .. 不是int man(int argc, char* argv[]){

【讨论】:

    【解决方案2】:

    要简要回答您的问题,请添加:

    return 0;
    

    main() 结束前。

    你的名字也有错别字。可能是main,而不是man

    为了给您更长的答案,您将 main 定义为返回一个整数 (int),但在其末尾没有 return 语句,因此它不返回任何内容。

    【讨论】:

      【解决方案3】:

      我假设您在 main() 函数中执行此操作。您的函数名称中有错字。 main() 的返回类型是 int 所以你应该从函数中得到一些东西。在main() 函数的末尾说return 0; //Success

      【讨论】:

        【解决方案4】:

        唯一的问题是您的简单拼写错误,它是main() 而不是man()

        虽然在 main 函数的末尾加上 return 0 也是正确的方法,但您问为什么您的代码不工作,这不是原因。尽管我不应该一直运行 C 程序,而且我很少return 0。另外,请确保您的自定义函数 GetFloat 与您当前的代码位于同一目录中,否则会出现错误,并确保它也能正常工作。

        如果这是您的意图,您仍然可以执行 int man(),但您仍然需要 int main 函数,并且您必须像这样调用您的 man 函数:

        int main()
        {
        man();
        return 0; //This isn't crucial, code will still run
        }
        

        【讨论】:

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