©
                    本文档使用
                    php中文网手册 发布
                
| 在头文件<fenv.h>中定义 | ||
|---|---|---|
| #define FE_DFL_ENV / *实现定义* / | (自C99以来) | 
宏常量FE_DFL_ENV扩展为类型const fenv_t *的表达式,该表达式指向默认浮点环境的完整副本,即在程序启动时加载的环境。
其他以FE_开头,后跟大写字母并且类型为const fenv_t *的宏可以由实现支持。
#include <stdio.h>#include <fenv.h>
 #pragma STDC FENV_ACCESS ON 
void show_fe_exceptions(void){    printf("current exceptions raised: ");    if(fetestexcept(FE_DIVBYZERO))     printf(" FE_DIVBYZERO");    if(fetestexcept(FE_INEXACT))       printf(" FE_INEXACT");    if(fetestexcept(FE_INVALID))       printf(" FE_INVALID");    if(fetestexcept(FE_OVERFLOW))      printf(" FE_OVERFLOW");    if(fetestexcept(FE_UNDERFLOW))     printf(" FE_UNDERFLOW");    if(fetestexcept(FE_ALL_EXCEPT)==0) printf(" none");    printf("\n");} void show_fe_rounding_method(void){    printf("current rounding method:    ");    switch (fegetround()) {           case FE_TONEAREST:  printf ("FE_TONEAREST");  break;           case FE_DOWNWARD:   printf ("FE_DOWNWARD");   break;           case FE_UPWARD:     printf ("FE_UPWARD");     break;           case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break;           default:            printf ("unknown");    };    printf("\n");} void show_fe_environment(void){    show_fe_exceptions();    show_fe_rounding_method();} 
 int main(){    printf("On startup:\n");    show_fe_environment(); 
    // Change environment    fesetround(FE_DOWNWARD);     // change rounding mode    feraiseexcept(FE_INVALID);   // raise exception    printf("\nBefore restoration:\n");    show_fe_environment(); 
    fesetenv(FE_DFL_ENV);    // restore    printf("\nAfter restoring default environment:\n");    show_fe_environment();}输出:
On startup:current exceptions raised: none current rounding method: FE_TONEAREST Before restoration:current exceptions raised: FE_INVALID current rounding method: FE_DOWNWARD After restoring default environment:current exceptions raised: none current rounding method: FE_TONEAREST
C11标准(ISO / IEC 9899:2011):
7.6 / 9浮点环境<fenv.h>(p:208)
C99标准(ISO / IEC 9899:1999):
7.6 / 8浮点环境<fenv.h>(p:188-189)
| fegetenvfesetenv(C99) | 保存或恢复当前的浮点环境(功能) | 
|---|---|
| feupdateenv(C99) | 恢复浮点环境并引发以前引发的异常(函数) | 
| FE_DFL_ENV的C ++文档 |