C語言中寫return 0;是不是都可以省略?

王龍森


看情況。return在C語言中不是必須的。C語言中的函數定義分為函數入口和函數出口。當有入口參數或者出口參數時,需要說明參數的數據類型。如定義一個延時函數,入口參數為延時時間,延時後不需要返回參數。因此可以定義如下:void delayms(unsigned int T){...}void代表不需要返回值,也就是不需要使用return。unsigned int T代表入口參數。

以下四個代碼都能正確運行

#include main(){double grade[200];double sum,avg,temp;int count,i,n;i=0;count=0;sum=0;printf("請依次輸入每個同學的成績,輸入-1結束\\n");scanf("%lf\

風信子視野


首先我們要弄清楚在什麼情況下需要有return。它一般是指函數的返回值。即如果我們需要一個函數有返回值,那它的返回值是多少?

有返回值的函數,自然對應是沒有返回值的函數。沒有返回值的函數,在函數聲明時其返回值類型為void。如果是這樣的函數,那麼它就不需要通過return進行返回任何類型。

如果一個函數在聲明時,其返回值類型為int。那麼此時我們就需要用return對這個函數進行返回。當然返回值類型不僅是int,可以是string或者是bool等等。

至於有返回值的函數和沒有返回值的函數,其具體描述。可以看作,如果我將一封信給一個信使,讓他幫我把這封信寄給某個人,只要寄到就可以,我把信給他就不管了。那麼類似這樣的動作可以視作沒有返回值的函數。

相反,如果我把這個信給這個形勢,我跟他說,你幫我把信寄給A之後我需要拿到A的一封回信,或者說A會給一封回信給我。那麼此時信使把我的信給了A之後,又帶回了A給我的回信,那麼此時可以視作有返回值的函數。

那麼我們言歸正傳,如果c語言中寫return 0是什麼意思呢?一般在c語言中寫return 0,一般是在返回值要求為int或者返回值為bool也就是真假類型函數中。那麼返回值為int的函數返回一個0,說明我執行完這個函數後,它會返回一個數值為0的數字給我。如果返回值為真假類型返回一個0,說明執行完這個函數後,它會返回一個“假”狀態給我。

這就是在c語言中寫return 0的意義。


全棧ACE


兩個層面的問題。

1、語法層面,C語言對於函數聲明有嚴格的規範,如果不遵守規範,編譯器會給你一大堆錯誤信息。

[返回值類型] 函數名 ([參數列表])

其中,返回值類型可以忽略,缺省為 void。當然不同的編譯器有一些細微的區別,但大體是這樣。

那麼就有兩種情況:

* 返回值類型為 void,可以不寫 return,可以 return; 但是不能 return 具體值。如:

void main()

{

// 可以不寫 return,函數執行完後自行返回

return; // 可以return

return 0; // 錯誤,不能返回具體值

}

* 返回值類型為非 void,則函數中必須顯式的return 相應類型值,如:

int main()

{

return; // 錯誤,返回值不是 int 類型

// 不寫 return 值,儘管某些編譯器會自動在main 方法加缺省返回 0,但這是極為愚蠢的設計

return 0;// 正確且符合標準

}

2,邏輯層面,如果函數返回值類型為 int,那麼返回 0 還是其他值要看具體業務。

通常情況下,main函數(程序入口)的聲明是這樣:

// 支持執行參數

int main(int argc,char * argv[])

// 不需要執行參數

int main()

這裡的返回值定義為程序的運行結果(exit code),如返回 0 表示正常結束,返回其他值表示錯誤等。具體值在不同操作系統上有相應的定義。


熙爸愛釣魚


return是函數的返回狀態,不可省略,return 0表示函數正常退出。主函數一定要return 0,自定義的函數根據函數的返回值類型進行return。如下所示:

char *func(){

//yourcode

return NULL;

}

int main(){

//yourcode

func();

return 0;

}

這裡主函數返回值為int型,return 0表示程序正常退出,func函數返回值為指紋類型,我們就返回指針類型的數據。

當然還有一些平臺主函數也可以是void類型,返回任意類型的數據,這種不常見,我們要習慣主函數返回0。

希望可以幫到你[耶]


少年風


其實看你return 0;在什麼函數里面。

如果是在mian函數里面,建議:

int main(){

//something to do

//main函數的返回值用於說明程序的退出狀態。

//如果返回0,則代表程序正常退出,否則代表程序異常退出。

return 0;

}

這樣程序正常告訴操作系統並正常退出。

要是一般的自定義的函數,那麼可以返回,也可以不返回。就看你的函數需不需要返回值、需要返回什麼值。

int youFunctionWithReturnValue(){

//do something

return 0;//或者其他你的結果的返回值

}


void youFunctionNoReturnValue(){

//do something

//不需要返回值

}





閉著眼睛切土豆


樓主模稜兩可的兩句話,結果還有這麼多人回答,讓我不禁感慨:世界上還是好人多啊。

我揣測一下樓主問這個問題的前提條件:函數的返回值為int型,或其它類型數值,在這種情況下,如果不寫return 0;編譯時會報錯的,因為找不到返回。

如果函數定義為void func(){},在函數最後可以加return,但後面不能帶參數,不過這個return沒有必要,一般不要。


tiger545


基於c99規定的編譯器要自動在生成的目標文件中加入return 0,假如你忘了寫return 0,程序也能運行,編譯器會給你加上的,而有些早期的編譯器則不會。還有,main 函數的返回值應該定義為 int 類型,main函數不支持void型返回值。


朱清的夏天


這個語句相當於該函數、給調用它的函數給了一個整數0。

實際中,你要分析為什麼這個函數要有這一句?有沒有return其他數?很多函數寫這一句是有以下類似的情況,如:

給定的數據文件不存在,return -1;

給定的數據不合理,return -2;

一切正常順利完成,return 0;

等等,這個要一開始就在設計報告中定義的。


素食的貓


這個需要看情況,有些編譯器遇到這種會直接給你警告。在大型項目中,好多是要根據這個返回值的值來判斷該方法的執行是否遇到異常情況,這種情況下,return 0就顯得尤其重要了,捕獲不到這個返回值0,會認為方法遇到了異常情況,會走到異常的流程中去


一粒塵土一個世界


看你寫main函數怎麼定義:

void main(){}

int main(){return 0;}

一般來說,建議寫成第二種,系統認為返回0屬於正常返回,否則是應用程序出現了異常。


分享到:


相關文章: