初学者C:错误:控制到达非空函数的结束?
我正在尝试制作一个贪婪的算法,我得到了这个错误:
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.25); { amount = amount - 0.25; coins++; } printf("Number of coins to use: %d\n", coins); }
我的花括号有什么问题,我该如何解决?
要简要回答您的问题,请添加:
return 0;
在main()
结束之前。
你的名字也有一个拼写错误。 它可能是main
,而不是man
。
为了给你一个更长的答案,你将main
定义为返回一个整数( int
)但在它的末尾没有return
语句,因此它不返回任何内容。
你的花括号没有错。 问题是你将main声明为返回int ..但你没有返回任何东西
如果你使用编译器标志-Wall
编译..当你没有从你定义为返回东西的函数返回某些东西时,你的编译器会抱怨。
只需添加:
return 0; // before the last bracket
还有它的int main(int argc, char* argv[]){
.. not int man(int argc, char* argv[]){
我假设你在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 }