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

C/C++ return 語句與 main 函數回傳值規範

     編輯:C 語言入門

return 基本語義

  • **終止當前函數執行**,控制權回到呼叫處下一條語句。
  • **可攜帶回傳值**(若函數回傳型別非 void),值型別必須與宣告相容。
  • main 中的 return 結束整個程式,值傳遞給作業系統(Exit Code)。

main 函數標準簽名

嚴禁:void main()、float main()、main() 無回傳型別(C++ 不允許隱式 int)。

回傳值約定

  • 0 / EXIT_SUCCESS:正常結束。
  • 非零 / EXIT_FAILURE:異常結束(具體碼可自定義錯誤類型)。
  • Shell 檢測:echo $? (Linux) / echo %ERRORLEVEL% (Windows)。
  • 串聯執行:prog1 && prog2(prog1 回傳 0 才執行 prog2),prog1 || prog2(prog1 非 0 才執行 prog2)。

隱式回傳 0(C99 / C++98 起)

若 main 結尾無 return,編譯器**自動插入 return 0;**。但**明確寫出**是良好習慣(VC6 等舊編譯器不支援)。

return 型別對應表

標準合法簽名備註
C89main() / int main()隱式 int,已淘汰
C99int main(void) / int main(int argc, char* argv[])現代 C 基準
C++98/11/14/17/20int main() / int main(int argc, char* argv[])int main() 等同 int main(void)

常見錯誤

  • ❌ void foo() { return 1; } → 編譯錯誤。
  • ❌ int foo() { if (cond) return 1; } 缺少預設回傳 → 未定義行為(C++ 流程落出非 void 函數為 UB)。
  • ❌ main() { return 1.5; } → 隱性轉換截斷,回傳 1,語義混淆。
  • ❌ void main() → 非標準,移植性極差。

總結

  • main **必須宣告為 int**,回傳 0 表示成功。
  • 非 void 函數**所有路徑必須回傳值**(C++ 強制,C 為 UB)。
  • return 即時跳出函數,善用於提前退出簡化邏輯(衛語句)。
  • 拒絕 void main(),堅持標準簽名,保證跨平台正確性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數回傳型別return 運算元型別範例
int整數常數/變數/運算式return 0; return x+y;
double浮點數return 3.14;
char字元return 'A';
struct T同型別物件/臨時物件return T{1,2};
void**不可有運算元**return; 或流程自然結束