舉個兩個例子:1):函數中加了return的:int max(int x,int y){int z;z=(x>y)?x:y;return z;}main(){int a,b,c,d,e,f;scanf("%d%d%d%d",&a,&b,&c,&d);e=max(a,b);f=max(c,d);printf("shi %d",e);getch();}2)函數中不加return的:int max(int x,int y){int z;z=(x>y)?x:y;}main(){int a,b,c,d,e,f;scanf("%d%d%d%d",&a,&b,&c,&d);e=max(a,b);f=max(c,d);printf("shi %d",e);getch();}這兩個函數中一個加了return,一個沒加,但是求的結果都是一樣的!我想問的是:1.在什么情況下必須要加返回值return?它的作用是什么?2.函數中的void是否可加可不加?什么情況下是必須加的?3.定義函數的時候什么情況下需要定義返回值的類型?
1 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
以下不包括構造函數(但構造函數中可以寫return;以結束其執行)
1,函數的返回值類型只要不是 void ,就要返回一個相同類型的值,當函數出現在一個表達式中時,這個值就是函數的值,比如說你的e=max(a,b);中,max若不返回一個值,那e的值就有問題,這樣寫函數應該會有錯誤或者警告
2,作為返回值類型的話,void必須加,如果是參數列表的話,目前可以什么都不寫。
3,正如你所說,要不要返回值以及定義成什么類型完全看你的需要,如果你只是用函數來執行一系列操作,那么可以沒有返回值(有時可以返回一個值用來表示執行是否成功等信息),如果你用函數來計算一個結果,就可以用返回值來解決,如果結果類型無法或不宜直接返回(如數組等),可以返回指針。
當然你總是可以不使用返回值,而是使用一些(輸出)參數來代替,這些參數可以是指針或者引用,用來把數據傳出函數。
新的標準中,對于int main(){},可以沒有return語句,編譯器會自動處理主函數的返回值。
- 1 回答
- 0 關注
- 1023 瀏覽
添加回答
舉報
0/150
提交
取消