问答

【C语言小白】看书的时候遇到main方法没有返回值,是咋回事?

作者:admin 2021-04-20 我要评论

如图所示: 看的是经典书《C程序设计语言》,里面的代码为啥跟我以前看到的都不一样? main方法既没有return 0,也没有int的返回值,这是咋回事呢? 是作者故意...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

如图所示:
image.png
看的是经典书《C程序设计语言》,里面的代码为啥跟我以前看到的都不一样?
main方法既没有return 0,也没有int的返回值,这是咋回事呢?
是作者故意省略不写么?还是说早期的C语言就是这样的呢?

我们正常的代码不应该都是这样的么?

int main(void) {

return 0;
}

有没有大神可以说明下?
我的书是这本:
image.png

###

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(){},不需要返回值。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器