z****e 发帖数: 2024 | 1 【 以下文字转载自 JobHunting 讨论区 】
发信人: eirc (eric), 信区: JobHunting
标 题: 电话面试题一问
发信站: BBS 未名空间站 (Mon May 24 12:09:45 2010, 美东)
1. C++ 里, main(){}的最后一定要加上return 吗?, 比如
int main(){
....
return 0;
}
2. 还有, 一定要 int main()吗? what about double main()?
一下子给搞懵了. | w***g 发帖数: 5958 | 2 1. 不加return返回值就不确定了。
2. C++要求一定要int ::main,这是C++标准规定的。C语言或者某些非标准的C++编译
器下可能"double main ()"能编译通过,但是因为sizeof(double)一般不等于sizeof(
int),这么做可能会引起程序退出时崩溃。
【在 z****e 的大作中提到】 : 【 以下文字转载自 JobHunting 讨论区 】 : 发信人: eirc (eric), 信区: JobHunting : 标 题: 电话面试题一问 : 发信站: BBS 未名空间站 (Mon May 24 12:09:45 2010, 美东) : 1. C++ 里, main(){}的最后一定要加上return 吗?, 比如 : int main(){ : .... : return 0; : } : 2. 还有, 一定要 int main()吗? what about double main()?
| X****r 发帖数: 3557 | 3 main不写return相当于return 0;
3.6.1 Main function [basic.start.main]
5 A return statement in main has the effect of leaving the main function
(destroying any objects with automatic storage duration) and calling
exit with the return value as the argument. If control reaches the
end of main without encountering a return statement, the effect is
that of executing
return 0;
【在 w***g 的大作中提到】 : 1. 不加return返回值就不确定了。 : 2. C++要求一定要int ::main,这是C++标准规定的。C语言或者某些非标准的C++编译 : 器下可能"double main ()"能编译通过,但是因为sizeof(double)一般不等于sizeof( : int),这么做可能会引起程序退出时崩溃。
| w***g 发帖数: 5958 | 4 原来C++的main是特殊编译的!
试了一下发现真是的。下面一段程序用gcc编译返回值为20,用g++编译返回值为0。太
牛了!
#include
int foo () {
return 20;
}
int main (int argc, char *argv[]) {
foo();
}
【在 X****r 的大作中提到】 : main不写return相当于return 0; : 3.6.1 Main function [basic.start.main] : 5 A return statement in main has the effect of leaving the main function : (destroying any objects with automatic storage duration) and calling : exit with the return value as the argument. If control reaches the : end of main without encountering a return statement, the effect is : that of executing : return 0;
|
|