[英]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; //Success
在main()
函數末尾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.