Why would you precede the main() function in C with a data type?
许多人都熟悉C语言中的Hello World程序:
1 2 3 4 5 6 7 |
为什么在
1 | int main() |
此外,我还看到在
1 | int main(void) |
这看起来像是免费的额外输入,但也许这是在其他情况下支付红利的最佳实践?
另外,如果返回字符串,为什么在
1 | char main(void) |
我也不明白为什么在函数结束时返回0。
在
由于这是不是一个整数和字符串,它
older版本C allow a默认的返回类型
在C(像C + +)的一个函数,不带任何参数,T是declared AS
型
以下内容在C89中有效
1 2 3 | main() { return 0; } |
但是在现代C(C99)中,这是不允许的,因为您需要显式地告诉变量的类型和函数的返回类型,所以它变成了
1 2 3 | int main() { return 0; } |
号
另外,在现代C语言中省略
1 2 3 | int main() { } |
行为就好像它返回了0。
人们把
1 2 3 4 5 6 | void f(); /* defined as void f(int a) { } later in a different unit */ int main() { f("foo"); } |
。
对
1 2 3 4 5 | void f(int); /* only int arguments accepted! */ int main(void) { f("foo"); /* 'char*' isn't 'int'! */ } |
因此,对于
遗憾的是,只有少数编译器支持现代C,所以对于许多C编译器,您可能仍然会收到使用现代C特性的警告。
此外,您还可以看到声明
它的被称为安境的现状。当程序finishes,你想让你的程序被调用方知道"exited。。。。。。。如果它exited normally,你将返回
这里的S *,你可以学习更多关于statuses境。 </P >
型
Why do some precede the main () function with int as in:
号
在C语言中(无论如何,这是您似乎要引用的代码),函数在前面没有任何数据类型时默认返回
Also, I've seen the word 'void' entered inside the () as in:
号
这也是一个主要的偏好问题,但是这两个问题截然不同:
It seems like extra typing for nothing, but maybe it's a best practice that pays dividends in other situations?
号
好处是清晰明了。如果你想说少输入是好的,那么你认为如何命名你所有的函数、变量、文件以及所有尽可能少的字符?
Also, why precede main() with an int if you're returning a character string? If anything, one would expect:
char main(void)
号
什么?为什么要从
另外,您的
I'm also foggy about why we return 0 at the end of the function.
号
程序结束时返回一个值给操作系统。这个值可以用来通知操作系统某些事情。例如,如果发现病毒,您的病毒扫描程序可以返回
这是背后的推理提供了一些形态的错误报告机制。所以只要一个程序时返回的值是零,typically均值,它认为它successfully完成其任务。用于非零的值,在程序设计的一些失败的原因。然后每一个现在,这可能correspond number的某些错误的信息。 几种系统API调用中返回返回到C代码表明是否处理是成功的。一天,有一个好的理念,除在C,这是最好的方式来告诉你的是,如果调用成功的或不。 </P >
这是传统的使用,因为
"国际"之前,对申报的是主函数的返回类型的函数。这是,该函数时返回的整数。 </P >
从函数,你可以返回一个工件的数据。这是典型的返回的"0",如果successfully函数完成。任何其他号码,到255是returned程序,如果做不到successfully execute,节目中的错误,这发生。 </P >
这是,你的回报率为0,与int数据类型的节目,这对程序的executed correctly。。。。。。。 </P >
大多数的操作系统使用的退出代码的应用。typically,