当前位置:网站首页>普通的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。
边栏推荐
- M3SDA: Moment matching for multi-source domain adaptation
- Typora设置标题自动标号
- 技术很牛逼,还需要“向上管理”吗?
- Download Win11 how to change the default path?Download Win11 change the default path method
- 来了!东方甄选为龙江农产品直播带货
- 【MindSpore1.2.0-rc1产品】num_workers问题
- 推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】
- 【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
- After MySQL grouping, take the largest piece of data [optimal solution]
- 从离线到实时对客,湖仓一体释放全量数据价值
猜你喜欢
随机推荐
MySQL Functions (Classic Collection)
在jOOQ中获取数据的多种不同方式
Perfectly Clear QuickDesk & QuickServer图像校正优化工具
ELK log analysis system
The advanced version of the cattle brushing series (search for rotating sorted arrays, inversion of the specified range in the linked list)
ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
MySQL数据库之JDBC编程
MySQL database - DQL data query language
Encapsulates a console file selector based on inquirer
Linux download and install mysql5.7 version tutorial the most complete and detailed explanation
Frog jumping steps (recursive and non-recursive) ------- Xiaolele walks the steps
Database indexes: indexes are not a panacea
历史上的今天:Win10 七周年;微软和雅虎的搜索协议;微软发行 NT 4.0
mysql慢查询优化
After MySQL grouping, take the largest piece of data [optimal solution]
MySQL夺命10问,你能坚持到第几问?
【无标题】多集嵌套集合使不再有MultipleBagFetchException
Entering the applet for the first time
MySQL八股文背诵版
SQLyog注释 添加 撤销 快捷键








