農會 資訊管理類程式設計108 年第 26 題單選題
在C 語言中,下列那個函數的設計錯誤?
Aint func( ) { return 5; }
Bint func( ) { return 2+3; }
Cint func( ) { int a=2; return a+3; }
Dint func( ) { int a=7; return; }正確答案
D正確答案
C語言宣告回傳int的函式,必須使用return加上對應型態的值,不可只寫return。
為什麼答案是 D
函式宣告回傳int,但return後方沒有接任何值,會導致編譯錯誤或回傳未定義的垃圾值。
考點:回傳值型態考點:運算式回傳考點:變數運算回傳考點:缺少回傳值
載入中…
完整詳解
Pro · 無限重點 C語言宣告回傳int的函式,必須使用return加上對應型態的值,不可只寫return。
看到函式前面寫int,return後面就一定要接數值或變數,沒接就是錯的!
逐選項分析
A回傳值型態✕
函式宣告回傳int,return 5 正確回傳整數值,語法完全合法。
B運算式回傳✕
return 2+3 會先計算出5並回傳,結果符合int型態,語法正確。
C變數運算回傳✕
變數a為int,return a+3 會回傳整數運算結果,語法正確無誤。
D缺少回傳值✓ 正確
函式宣告回傳int,但return後方沒有接任何值,會導致編譯錯誤或回傳未定義的垃圾值。
C語言函式回傳值對照
| 函式宣告 | return 敘述 | 是否合法 |
|---|
| int func() | return 5; | 合法 |
| int func() | return a+b; | 合法 |
| int func() | return; | 不合法(缺少回傳值) |
| void func() | return; | 合法 |
初學者常以為宣告了變數(a=7)就可以自動回傳,或是以為return;會預設回傳最後一個變數。C語言沒有這種隱式回傳機制,必須明確寫出return a;。