C 庫 - feholdexcept() 函式



C 的fenvfeholdexcept() 函式用於執行可能引發異常的浮點運算,而不會中斷程式的流程。

在程式編譯成功後,我們可以恢復原始環境以恢復異常。

語法

以下是 feholdexcept() 函式的 C 庫語法。

feholdexcept(fenv_t *envp);

引數

  • 該函式接受一個指向 fenv_t 物件的指標,在清除標誌(浮點運算)之前,當前環境將儲存在此物件中。

返回值

此函式返回一個整數值,其含義如下:

  • 零,如果程式正常執行。

  • 非零,如果無法設定環境。

示例 1

feholdexcept()

#include <stdio.h>
#include <fenv.h>

int main() {
   fenv_t env;
   
   // Save and clear all exceptions
   feholdexcept(&env); 
   
   // Restore the saved exceptions
   fesetenv(&env); 
   printf("Exceptions restored.\n");
   return 0;
}

輸出

上述程式碼產生以下結果:

Exceptions restored.

示例 2

下面的程式儲存並清除異常以執行運算,而不會因除以零而停止,然後檢查是否發生了此類異常。

#include <stdio.h>
#include <fenv.h>

int main() {
   fenv_t env;
   
   // Save and clear exceptions
   feholdexcept(&env); 
   
   // Perform operations that may raise exception
   if (fetestexcept(FE_DIVBYZERO)) {
       printf("Division by zero occurred, but calculations continued.\n");
   }
   // Restore the environment to handle exceptions properly
   fesetenv(&env);
   return 0;
}

輸出

執行上述程式碼後,我們將獲得以下結果:

=== Code Execution Successful ===
c_library_fenv_h.htm
廣告
© . All rights reserved.