【发布时间】:2016-03-06 13:47:45
【问题描述】:
为什么 char/float/double(其他原始数据类型)不是 main() 的返回类型?
【问题讨论】:
为什么 char/float/double(其他原始数据类型)不是 main() 的返回类型?
【问题讨论】:
因为这就是语言的主要设计方式。
从历史上看(即在制定 ISO/IEC 9899 之前),没有 void。具有您不关心的返回值的函数被声明为没有返回类型,从而使返回类型隐式int。那时,main() 返回什么实际上并不重要,调用 main() 的代码看起来像这样:
setup_stuff();
main(argc, argv);
exit(0);
当main() 返回时,程序以退出状态0 结束。想要返回非零退出状态的程序必须显式调用exit()。计划 9 保留了这个模型。有人认为这限制性太强,将这段代码改为返回 main() 的返回值:
setup_stuff();
exit(main(argc, argv));
这就是我们最终得到main() 返回int 的方式。据我所知,C++ 只是从 C 中复制了这个设计方面。
【讨论】: