📅  最后修改于: 2023-12-03 15:13:44.207000             🧑  作者: Mango
在C/C++程序中,当程序运行完成后会返回一个退出代码。这个退出代码可以用来表示程序的状态或告诉系统运行的结果。一般情况下,返回0表示程序成功执行,其他数字表示不同的错误或结果。
当程序执行成功时,一般返回0值。
#include <stdio.h>
int main()
{
printf("Hello, World!");
return 0;
}
#include <iostream>
int main()
{
std::cout << "Hello, World!";
return 0;
}
当程序执行不成功或出现错误时,需要返回非0值。
#include <stdio.h>
int main()
{
FILE* fptr = NULL;
fptr = fopen("file.txt", "r");
if ( fptr == NULL )
{
printf("Failed to open file\n");
return 1;
}
fclose(fptr);
return 0;
}
#include <iostream>
#include <fstream>
int main()
{
std::ifstream file("file.txt");
if ( !file.is_open() )
{
std::cout << "Failed to open file\n";
return 1;
}
file.close();
return 0;
}
在C/C++中,有些退出代码具有特殊的含义。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void sig_handler(int sig)
{
printf("Caught signal %d\n", sig);
exit(sig);
}
int main()
{
signal(SIGINT, sig_handler);
signal(SIGSEGV, sig_handler);
signal(SIGABRT, sig_handler);
signal(SIGFPE, sig_handler);
int num = 10 / 0;
printf("The result is %d\n", num);
return 0;
}
#include <iostream>
#include <csignal>
void sig_handler(int sig)
{
std::cout << "Caught signal " << sig << "\n";
exit(sig);
}
int main()
{
std::signal(SIGINT, sig_handler);
std::signal(SIGSEGV, sig_handler);
std::signal(SIGABRT, sig_handler);
std::signal(SIGFPE, sig_handler);
int num = 10 / 0;
std::cout << "The result is " << num << "\n";
return 0;
}
以上是C/C++中的退出代码的介绍。在程序开发中,正确使用退出代码可以更好的表达程序执行的状态和结果,方便程序员对程序的修复和优化。