當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


C語言 feholdexcept用法及代碼示例

C語言fenv頭文件(fenv.h)中feholdexcept函數的用法及代碼示例。

用法:

int feholdexcept (fenv_t* envp);
保留浮點異常
保存當前狀態浮點環境在所指向的對象中envp。然後重置當前狀態,並-如果支持-將環境置於馬不停蹄模式。

這個不間斷模式防止浮點異常引發程序時停止程序的正常運行(帶有陷阱或異常終止)。

調用此函數的程序應確保編譯指示FENV_ACCESS已啟用該調用。

參數

envp
指向一個指針fenv_t存儲浮點環境狀態的對象。

返回值

零,如果函數成功完成,包括設置浮點環境馬不停蹄模式。
否則為非零值。

示例

/* feholdexcept/feupdateenv example */
#include <stdio.h>      /* printf, puts */
#include <fenv.h>       /* feholdexcept, feclearexcept, fetestexcept, feupdateenv, FE_* */
#include <math.h>       /* log */
#pragma STDC FENV_ACCESS on

double log_zerook (double x) {
  fenv_t fe;
  feholdexcept(&fe);
  x=log(x);
  feclearexcept (FE_OVERFLOW|FE_DIVBYZERO);
  feupdateenv(&fe);
  return x;
}

int main ()
{
  feclearexcept (FE_ALL_EXCEPT);
  printf ("log(0.0): %f\n", log_zerook(0.0));
  if (!fetestexcept(FE_ALL_EXCEPT))
    puts ("no exceptions raised");
  return 0;
}


可能的輸出:

log(0.0): -inf
no exceptions raised



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C feholdexcept function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。