首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言函數返回值與 return 敘述單選題解析

     編輯:C 語言問答

題目回顧

下面錯誤的是()
A. 用戶定義的函數中可以沒有 return 敘述
B. 用戶定義的函數中可以有多個 return 敘述,以便可以調用一次返回多個函數值
C. 用戶定義的函數中若沒有 return 敘述,則應當定義函數為 void 型別
D. 函數的 return 敘述中可以沒有運算式

選項逐一分析

選項正確性解析
A正確回傳型別為 void 的函數可以完全沒有 return,或只有 return;;非 void 函數若控制流程可到達函數末尾而無 return,屬於未定義行為(C99 之前)或編譯錯誤(C99 之後),但語法上「可以沒有」是成立的(雖然危險)。
B錯誤(正解)函數一次呼叫只能返回一個值。 多個 return 敘述是為了在不同條件下提早結束函數並返回不同值,絕非 為了「一次返回多個值」。若需返回多值,需透過指標參數、結構體或全域變數。
C正確若函數不需返回值,應宣告為 void,且函數體內可無 return 或只寫 return;。
D正確return; 不帶運算式,僅用於 void 函數中提早返回。

核心觀念總結

  • 單一返回值原則:C 函數每次呼叫至多返回一個值(透過 `return 運算式;`)。
  • 多重 return 用途:簡化流程控制(如守衛條件)、錯誤處理提早退出、遞迴基底案例返回。
  • void 函數:不返回值,`return;` 可省略(函數結束隱含返回)。
  • 非 void 函數:所有執行路徑必須以 `return 運算式;` 結束(C99 強制),否則未定義行為。

正確範例:多重 return 的正確用法

int max(int a, int b) {
    if (a > b) return a;  // 條件 1 提早返回
    return b;             // 預設返回
}

// 遞迴階乘
int fact(int n) {
    if (n <= 1) return 1; // 基底案例
    return n * fact(n-1); // 遞迴返回
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved