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

C語言 main 函式回傳值與程式結束狀態碼詳解

     編輯:C 語言問答

核心概念釐清

int main() {
    float a = 2.0;
    printf("%f", a);  // 輸出:2.000000
    return 0;
}

兩個不同層面的「回傳」

層面printf 輸出main 回傳值
用途向使用者/標準輸出顯示資訊向作業系統/父程序回報執行狀態
類型格式化字串,可輸出任意型別整數(int),通常 0=成功、非 0=失敗
可見性螢幕上直接看到螢幕不顯示,需用 echo $? (Linux) 或 echo %ERRORLEVEL% (Windows) 查看
範例printf("%f", 2.0) → 顯示 2.000000return 0; → 程式結束碼 0

為什麼 main 回傳 int?

C 標準規定 main 回傳 int,作為程式的結束狀態碼。這是程式與作業系統溝通的協定:

  • return 0; 或 exit(0); → 正常結束
  • return 1; 或 exit(1); → 異常結束(具體錯誤碼可自定義)

驗證實驗

Linux/macOS 終端機

$ gcc test.c -o test
$ ./test
2.000000
$ echo $?
0

Windows CMD

> gcc test.c -o test.exe
> test.exe
2.000000
> echo %ERRORLEVEL%
0

Windows PowerShell

> .\test.exe
2.000000
> $LASTEXITCODE
0

常見誤區

誤區正確理解
main 回傳值會印在螢幕上不會。只有 printf/puts 等輸出函式才會顯示
void main() 也可以不標準。C99/C11 要求 int main() 或 int main(int argc, char *argv[])
沒寫 return 0 就會報錯C99 起,main 結束隱含 return 0;但建議明確寫出,提高可讀性
回傳值型別影響 printf 輸出完全無關。printf 看格式字串 %f,main 回傳 int 給 OS

實務應用:腳本判斷程式執行結果

# Linux Shell 腳本範例
./my_program
if [ $? -eq 0 ]; then
    echo "程式成功執行"
else
    echo "程式異常結束,錯誤碼: $?"
fi

標準簽名完整形式

// 完整標準形式(支援命令列參數)
int main(int argc, char *argv[]) {
    // argc: 參數個數(含程式名)
    // argv: 參數字串陣列,argv[0] 為程式名
    return 0;
}

總結

  • printf:給人看的(標準輸出)
  • return 0:給作業系統看的(結束狀態)
  • 兩者完全獨立,互不干擾
  • 養成習慣:int main() { ... return 0; }
「程式的輸出是給使用者的禮物,回傳碼是給作業系統的承諾。」—— 區分兩者,是從寫代碼走向工程思維的關鍵一步。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved