在下面的代碼中會發生什麼?程序執行'return 1'還是退出?如果exit(0)在返回1之前有返回1會執行嗎?
int cmd_quit(tok_t arg[]) {
printf("Bye\n");
exit(0);
return 1;
}
在下面的代碼中會發生什麼?程序執行'return 1'還是退出?如果exit(0)在返回1之前有返回1會執行嗎?
int cmd_quit(tok_t arg[]) {
printf("Bye\n");
exit(0);
return 1;
}
exit()
結束程序,不管是什麼。所以不行。在實踐中,C運行庫總是會執行類似的操作。
exit(main(argc, argv));
執行你的程序。
(意思是:如果main()
回報,exit()
將自動與它的返回值被稱爲)
在任何情況下都可以使用任何書寫方式(沒有任何其他條件)? – Utkarsh
@UkkarshGupta編號'exit()'的唯一工作就是結束你的程序*在這裏和現在*。如果你在'main()'末尾,只要返回返回碼,運行時就會調用'exit()'(看我的答案)。 –
該程序將在遇到return 1;
語句之前退出。
exit()
函數導致進程終止。exit()
函數不返回。return 1
;exit
將return
之前執行,但它通常用於異常退出的功能,並返回一個失敗的代碼來呼叫者,召集者。所以倒過來的退出值會更好
exit(1);
return 0;
但是在您提供的代碼中,檢測實際故障是有意義的。
if (printf("Bye\n") <= 0)
exit(1);
return 0;
爲什麼要'返回1;'以前執行? – Downvoter