1、C 和 C++ 中 main() 函数的返回值
C和C++中,main()
函数必须返回一个整数值 (int
),该返回值通常被操作系统用来判断程序是否成功执行。
1)返回值是0 表示成功
返回 0
通常表示程序成功运行,没有出现错误。这是程序退出时的惯用做法,也是操作系统约定俗成的标准。
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0; // 程序成功执行,返回 0
}
2)返回值是非 0 值表示错误
返回非0
的值表示程序执行过程中出现了错误,通常该值可以表示特定的错误类型。开发者可以通过定义不同的错误码,帮助操作系统或调用者识别程序失败的原因。
#include <stdio.h>
int main() {
printf("An error occurred.\n");
return 1; // 返回 1 表示程序遇到错误
}
2、隐式返回值
C和C++中,如 main()
函数没有显式返回值,有些编译器会自动假定返回值为 0
。
#include <stdio.h>
int main() {
printf("Hello, World!\n");
// 没有显式返回值,但会隐式返回 0
}
注意:虽然这种写法是合法的(从 C++11 标准开始和 C99 标准起),但是为了保证代码可读性和明确性,推荐总是显式返回 0
。
3、exit() 与 return
return
语句用于返回 main()
函数的值,表示程序的退出状态。但也可以使用 exit()
函数来终止程序,并且返回一个特定的状态码。
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Exiting with error.\n");
exit(1); // 终止程序,返回状态码 1
}
注意:exit(0)
表示成功退出。exit(1)
或其他非零值表示程序遇到错误。与 return
的不同之处在于,exit()
是一个函数,直接退出程序而不返回到 main()
函数,它会调用任何已注册的清理函数(如 atexit()
)。
4、main() 的返回值和操作系统的交互
当 main()
返回一个整数时,操作系统会接收该值,并将其作为程序的退出状态(exit status)。这个状态码可以通过在命令行中调用 $?
来查看,如下,
./my_program
echo $?
注意:echo $?
会输出上一个命令的退出状态。例如,如果程序返回 0
,则输出 0
,如果返回 1
,则输出 1
。