簡體   English   中英

初學者C:錯誤:控制到達非空函數的結尾?

[英]Beginner C: error: control reaches end of non-void function?

我正在嘗試制作一個貪婪算法,但出現此錯誤:

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);

}

花括號有什么問題,如何解決?

大括號沒問題。 問題是您將main聲明為返回int ..但未返回任何內容

如果使用編譯器標志-Wall ..進行編譯,則當您不從定義為返回內容的函數中返回內容時,編譯器將抱怨。

只需添加:

  return 0; // before the last bracket

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

要簡短回答您的問題,請添加:

return 0;

main()結束之前。

您的名字中也有錯字。 它可能是main ,不是man

為了給您更長的答案,您將main定義為返回整數( int ),但末尾沒有return語句,因此它不返回任何內容。

我假設您正在main()函數中執行此操作。 您的函數名稱中有錯字。 main()返回類型為int因此您應該從函數中獲取一些信息。 return 0; //Success return 0; //Successmain()函數末尾return 0; //Success

唯一的問題是您的簡單錯字,它是main()而不是man()

盡管這是在主函數末尾也return 0的正確方法,但是您詢問了為什么代碼無法正常工作,這不是原因。 即使我不應該一直運行C程序,也很少return 0 另外,請確保您的自定義函數GetFloat與當前代碼位於同一目錄中,否則它將出現錯誤,並確保它也可以工作。

如果這是您的意圖,您仍然可以執行int man(),但是您仍然需要int main函數,並且您必須像這樣調用man函數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM