在早年间,学C语言的时候,当时课本上一般都是void main
,后来老师和我们说,现在写代码一般都是 int main(...){ return 0; }
,2024年的我很好奇当年的我为啥不问问老师 return 4;
行不?return 10;
行不
在 C/C++
程序中,main函数的返回值通常用于向操作系统报告程序的执行状态。这个返回值是一个整数,通常有以下含义:
- 返回0:表示程序成功执行,没有错误。
- 返回非0值:表示程序执行过程中遇到了错误或异常情况。具体的非0值可以表示不同类型的错误,但这通常由程序自己定义。
来看一个简单的C程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc > 1 && strcmp(argv[1], "success") == 0) {
// 如果命令行参数是"success",则返回0
return 100;
} else if (argc > 1 && strcmp(argv[1], "failure") == 0) {
// 如果命令行参数是"failure",则返回1
return 60;
} else {
// 如果没有命令行参数或参数不是"success"或"failure",则返回-1
return 80;
}
}
编译之后,生成一个可执行文件 main
写一个 bash 脚本来执行对应的情况:
$?
在 Bash 脚本中用于获取上一个命令的退出状态码
#!/bin/bash
# 编译C程序
# gcc -o main main.c
# 运行程序并传递"success"作为参数,然后打印返回值
./main success
echo "Return value for 'success': $?"
# 运行程序并传递"failure"作为参数,然后打印返回值
./main failure
echo "Return value for 'failure': $?"
# 运行程序但不传递任何参数,然后打印返回值
./main
echo "Return value for no argument: $?"
执行情况:
Return value for 'success': 100
Return value for 'failure': 60
Return value for no argument: 80
$?
在 Bash 脚本中用于获取上一个命令的退出状态码,其值范围是从 0
到 255
。这是因为退出状态码通常存储在一个 8 位的寄存器中,这意味着它只能表示 256 个不同的值,所以当主函数 return -1;
的时候,$?
返回的是255