6

为什么说C++的main函数最后不写 return 0; 是不好的习惯?

 3 years ago
source link: https://www.zhihu.com/question/451801677/answer/1833471414
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为什么说C++的main函数最后不写 return 0; 是不好的习惯?

老师总在说这句话,但是我还是不知道为什么,请大佬来为我答疑解惑。
71
52,439
登录一下,更多精彩内容等你发现
贡献精彩回答,参与评论互动

In C and C++, main magically returns 0 if you fall off the end;
set the flag which tells us that.
This is C++ [basic.start.main]p5 and C99 5.1.2.2.3.

All the standards say that main() should return 'int'.

C/C++中的main函数忽略return 0语句将自动补充一个,所有标准中的main返回类型都是int

继续浏览内容
v2-88158afcff1e7f4b8b00a1ba81171b61_720w.png
发现更大的世界
v2-a448b133c0201b59631ccfa93cb650f3_1440w.png
Chrome
知乎十年新知答主

其实这是个历史兼容性的问题。

能问出这个问题意味着你接触过的c++编译器不够多,没有意识到并非所有C++编译器都执行了相同的标准。

而我,确实至少遇到过两种异常状况编译器,不写return的话,一种返回255一种返回随机数,虽然这些都是比较特殊的编译器,但他们确实客观存在。而这种返回值显然会造成困扰。

比较新的C++标准确实规定了不写默认返回0。但早期的C++编译器并未就此问题达成统一意见,甚至也并未实现所有C++标准。所以为了保留历史兼容性,还是建议手动返回0。

继续浏览内容
v2-88158afcff1e7f4b8b00a1ba81171b61_720w.png
发现更大的世界
v2-a448b133c0201b59631ccfa93cb650f3_1440w.png
Chrome
C++话题下的优秀答主

我认为这只教学中的遗留问题。 main 函数返回值的例外处理这种我不知道要不要花 1 分钟讲明白的规定,在教学中仍得不到充分的普及,于是对它的刻意忽略就在教学欠缺中一次次固化下来。

继续浏览内容
v2-88158afcff1e7f4b8b00a1ba81171b61_720w.png
发现更大的世界
v2-a448b133c0201b59631ccfa93cb650f3_1440w.png
Chrome

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK