下面的代码中发生了什么,程序执行'return 1'还是之前退出?
int cmd_quit(tok_t arg[]) {
printf("Byen");
exit(0);
return 1;
}
exit()
无论如何都结束程序。所以:没有。实际上,C运行时总是会做类似于
exit(main(argc, argv));
执行你的程序。
(含义:如果 main()
返回,则自动调用exit()
并返回其返回值)
程序将在遇到return 1;
语句之前退出
-
exit()
函数导致进程终止。 -
exit()
函数不返回 - 您的程序无法到达
return 1
;
函数exit
将在return
之前执行,但它通常用于异常退出并向调用者返回失败代码。因此,最好反转退出值
exit(1);
return 0;
但是在您提供的代码中,检测实际故障是有意义的。
if (printf("Byen") <= 0)
exit(1);
return 0;