当前位置:网站首页>普通的int main(){}没有写return 0;会怎么样?
普通的int main(){}没有写return 0;会怎么样?
2022-07-30 19:52:00 【一缕阳光a】
结论可能大家看上面的图就知道了,没有加return 0;编译器会自动添加一个。那怎么证明呢?
可以查看相应的汇编代码,查看汇编代码推荐使用godbolt.org网站,相当方便。
如上图,输入C++代码,在右半部分会显示编译器编译后的汇编代码,通过查看高级语言背后的汇编指令我们可以更好的分析代码的性能。网站更强大的功能是它支持市面上几乎所有的编译器,而且各个版本都有。
下面使用这个网站分析一波!
先看一段带有return 0的截图:
看我右面红框圈出来的代码,大家可以理解为eax就是main()函数的返回值,这里可以看到main()函数的返回值是0。
再看一段不带return 0的相应截图:
可以发现编译器还是把eax的值设为了0,由此可以理解为,即使在main函数中不写return 0,编译器还是会默认添加个return 0。
那其他非main函数也会默认添加个return 0吗?
先看一个普通的带有int返回值的函数:
注意看func()中的eax寄存器被赋值为9,即func()的返回值为9。
如果不加return a是什么样子?
可以看到,如果在func()内不写return语句,编译器则没有给eax寄存器更新值,那函数的返回值就不会是我们期待的样子。
得出结论:正常一个带有返回值的函数,返回值都会存在某个地方,可能是栈上也可能是寄存器里,如果你不给它返回值,那可能外部获取的返回值就是个奇奇怪怪的值,因为咱也不知道那块地址是什么数据。
但是吧,main函数除外,因为main函数没有return的话,编译器会默认加个return 0;但个人认为这也确实是不好的习惯,mian函数会犯这种错误,其它函数估计也会这样,所以最好所有的带有返回值的函数都添加return xxx。
边栏推荐
- 用jOOQ 3.17投射类型安全的嵌套表记录
- MySQL分库分表
- Scala类中的属性
- ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
- 【MindSpore】用coco2017训练Model_zoo上的 yolov4,迭代了两千多batch_size之后报错,大佬们帮忙看看。
- 360杜跃进:太空安全风险加剧,需打造一体化防御体系
- Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
- MindSpore:Cifar10Dataset‘s num_workers=8, this value is not within the required range of [1, cpu_thr
- 已删除
- MySQL database --- Addition, deletion, modification and query of MySQL tables (advanced)
猜你喜欢
MySQL数据库之JDBC编程
【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
MySQl数据库————DQL数据查询语言
【无标题】多集嵌套集合使不再有MultipleBagFetchException
从离线到实时对客,湖仓一体释放全量数据价值
Perfectly Clear QuickDesk & QuickServer图像校正优化工具
ELK log analysis system
Win11如何更改默认下载路径?Win11更改默认下载路径的方法
数据库索引:索引并不是万能药
The JDBC programming of the MySQL database
随机推荐
ImportError:attempted relative import with no known parent package
ELK日志分析系统
MindSpore:npu 多卡训练自定义数据集如何给不同npu传递不同数据
PHP低代码开发引擎—表单设计
JUnit 5测试中的临时目录(附实例及代码)
Mac安装PHP开发环境
Interviewer Ali: Describe to me the phenomenon of cache breakdown, and talk about your solution?
055 c# print
试写C语言三子棋
推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】
ImportError: attempted relative import with no known parent package
“数字化重构系统,搞定 CEO 是第一步”
Download Win11 how to change the default path?Download Win11 change the default path method
在jOOQ中获取数据的多种不同方式
360杜跃进:太空安全风险加剧,需打造一体化防御体系
推荐系统:概述【架构:用户/物品特征工程---->召回层---->排序层---->测试/评估】【冷启动问题、实时性问题】
刷题记录----字符串
看完《二舅》,我更内耗了
Maxwell 一款简单易上手的实时抓取Mysql数据的软件
Scala类中的属性