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

C 語言除零導致程式無回應:浮點數除以零的未定義行為

     編輯:程式設計綜合問答

代碼 z = x / y 中 y = 0,執行時程式「無回應」(實為觸發硬體例外/訊號導致崩潰或無限循環)。

原因

  • 整數除零:觸發 **SIGFPE** (算術例外),程式終止。
  • 浮點數除零:IEEE 754 定義結果為 Inf、-Inf 或 NaN,**不會崩潰**,但若後續邏輯未處理特殊值可能陷入無限循環。

防禦性檢查

if (y == 0) {
    printf("Error: Division by zero\n");
    return ERROR;
}
z = x / y;

除錯建議

使用除錯器設定資料斷點或檢查除法運算前的分母值,或啟用編譯器警告 -Wdiv-by-zero (GCC/Clang) / /warn:divide_by_zero (MSVC)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved