如图所示:
看的是经典书《C程序设计语言》,里面的代码为啥跟我以前看到的都不一样?
main方法既没有return 0,也没有int的返回值,这是咋回事呢?
是作者故意省略不写么?还是说早期的C语言就是这样的呢?
我们正常的代码不应该都是这样的么?
int main(void) {
return 0;
}
有没有大神可以说明下?
我的书是这本:
C89 标准里,main()
是可以接受的(就是你这本书里的写法),int main()
这种无参的也行。
但从 C99 开始,只有两种写法是正确的:
int main(void) // 不需要从命令行取参数时用这个
int main(int argc, char *argv[]) // 需要从命令行取参数时用这个,当然了形参你改个名这是可以的
不过很多编译器(比如 TurboC、VC++)确实也支持 void main()
,但这属于 C 语言标准没出来之前行业的历史产物,毕竟 1972 年就有 C 语言了,第一版标准 1989 年才确定,但放在今天来看是绝对错误的做法。
总结一下,上面一共提到了 5 种写法,C88 两种(已被废弃)、C99 两种、错误写法一种。
###首先说一下这个返回值是干啥用的,main函数返回非0时,操作系统会认为此程序异常退出,如果你在linux下,使用echo $?
可以看到上一条命令的返回状态码,其实就是main函数的返回值。所以在编写运行在操作系统上面的程序时,需要写这个返回值,当然部分编译器可以处理没有返回值的情况。
在编写大部分单片机嵌入式程序时,程序需要一直运行,退出就卡死了,所以一般都是使用void main(){}
,不需要返回值。