C 庫 - feupdateenv() 函式



C 的fenvfeupdateenv()函式用於恢復浮點環境。它還處理在使用feholdexcept儲存的環境發生異常期間的異常。feholdexcept 可以恢復原始環境以恢復異常。

語法

以下是feupdateenv()函式的 C 庫語法 -

feupdateenv(const fenv_t *envp);

引數

此函式僅接受一個引數 -

  • 它接受一個指向 fenv_t 物件的指標,該物件引發異常處理程式。

返回值

  • 如果程式編譯成功,則返回整數形式的值 0。此外,當無法引發異常時,它會返回非零值。

示例 1

以下 C 庫程式顯示了feupdateenv()函式的使用。

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

int main() {
   fenv_t env;
   
   // Save and clear exceptions
   feholdexcept(&env); 

   // Restore the environment and raise exceptions
   feupdateenv(&env); 
   printf("Environment restored, exceptions handled.\n");
   return 0;
}

輸出

以上程式碼產生以下結果 -

Environment restored, exceptions handled.

示例 2

要儲存和清除異常,我們可以執行除以零的任務,該任務恢復環境並檢查是否發生了異常。

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

int main() {
   fenv_t env;
   
   // Save and clear exceptions
   feholdexcept(&env); 

   // Division by zero
   double result = 1.0 / 0.0; 

   // Restore the environment and handle exceptions
   feupdateenv(&env); 
   if (fetestexcept(FE_DIVBYZERO)) {
       printf("Division by zero occurred and handled.\n");
   }
   return 0;
}

輸出

執行以上程式碼後,我們得到以下結果 -

Division by zero occurred and handled.

示例 3

要恢復原始環境,它執行引發和溢位異常的任務,以及執行我們在示例 2 中執行的相同程式(儲存和清除異常)。

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

int main() {
   fenv_t env1, env2;
   // Save and clear exceptions
   feholdexcept(&env1);    
   
   // Raise an overflow exception
   feraiseexcept(FE_OVERFLOW); 
   
   // Save and clear exceptions again
   feholdexcept(&env2); 

   // Restore the original environment
   feupdateenv(&env1); 
   printf("Original environment restored.\n");
   return 0;
}

輸出

執行以上程式碼後,我們得到以下結果 -

Original environment restored.
c_library_fenv_h.htm
廣告