請問return 0存在與否有什么意義?
我把所有return 0都刪掉了,任然是對的,并且刪除其中任何一個都沒問題
#include <stdio.h>
int Xuexi()
{
? ? printf("小明在慕課網(wǎng)上學(xué)習(xí)\n");
}
int Yixue(int n)
{
? ? printf("小明在慕課網(wǎng)上學(xué)習(xí)了%d門課程",n);
? ??
}
int main()
{
? ? Xuexi();
? ? Yixue(0);
? ?
}
2022-10-17
在main函數(shù)中,return 0 指的是程序的執(zhí)行狀態(tài)。在實(shí)際的編譯器當(dāng)中,對于main中不寫return 0,不同的編譯器有不同的應(yīng)對。有的在編譯的時候會自動添加(比如Dev C++),有些不會給你添加,而選擇在編譯的時候直接報(bào)錯(如蘋果的Xcode)。你甚至可以把main函數(shù)的返回值改成void(根據(jù)編譯器不同,有的自動添加,有的報(bào)錯)。只能說在c的main中,return 0 多數(shù)情況下誤傷大雅,但是保留return 0 是一個好習(xí)慣。
至于函數(shù)的返回值:函數(shù)會將返回值保留在eax寄存器當(dāng)中。如果某一個函數(shù)沒有return,則eax中可能是之前傳入?yún)?shù)的值,也可能是上一次return的值(給函數(shù)傳遞參數(shù)時,如果傳入的時變量參數(shù),則會存放到eax,如果只是直接的數(shù)字,則不會用到寄存器)。也就是說,雖然沒有return,(編譯器為了效率,不會做有返回值的函數(shù)中有沒有寫return的檢查,因此能夠編譯通過),但是程序仍然會返回一個寄存在eax中的數(shù)值,只不過返回什么值就不一定了。
2023-08-25
在 C 語言中,函數(shù)的返回類型表示函數(shù)執(zhí)行完畢后返回給調(diào)用者的結(jié)果。`return 0;` 表示函數(shù)執(zhí)行成功并返回了一個 `0` 值。
在主函數(shù) `main()` 中,返回 `0` 通常用于表示程序成功執(zhí)行并正常退出。這是因?yàn)樵诖蠖鄶?shù)操作系統(tǒng)中,一個程序返回值為 `0` 表示程序執(zhí)行成功,非零值表示程序執(zhí)行失敗或出現(xiàn)異常情況。當(dāng)我們在命令行環(huán)境中運(yùn)行一個程序時,可以通過檢查返回值來確定程序的執(zhí)行狀態(tài)。
如果你刪除了主函數(shù) `main()` 中的 `return 0;`,在一些編譯器中可能仍然能正常工作。這是因?yàn)橹骱瘮?shù)結(jié)束時會默認(rèn)添加一個 `return 0;` 語句,所以在你的代碼中添加或刪除 `return 0;` 并不會對程序的執(zhí)行產(chǎn)生直接影響。
然而,為了遵循編程的規(guī)范和良好的習(xí)慣,建議在主函數(shù) `main()` 的結(jié)尾處添加 `return 0;` 來明確地表示程序的成功結(jié)束。這樣可以提高代碼的可讀性,并且有助于更好地與其他程序接口、調(diào)用的約定進(jìn)行兼容。