// atexit()函数的作用就是在程序退出时做一些清理工作。参数是函数指针。
// 按照先进后出的原则,类似于栈
#include <stdio.h>
#include <stdlib.h> // for atexit()
void sign_off()
{
puts("call sign off");
}
void too_bad()
{
puts("call too bad");
}
int main()
{
int n=0;
atexit(sign_off);//注册sign_off 函数
puts("enter an integer");
if(scanf("%d",&n)!=1)
{
puts("That's no integer");
atexit(too_bad);//注册too_bad 函数
exit(EXIT_FAILURE);
}
printf("%d is %s.\n",n,(n%2==0)?"even":"odd");
return 0;//隐式调用exit() 所以会调用sign_off
}
Result: