如何控制浮点异常.

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

//浮点异常的控制位

#define FPUEM_INVALIDOP 0x01

#define FPUEM_DENORMALOP 0x02

#define FPUEM_ZERODIVIDE 0x04

#define FPUEM_OVERFLOW 0x08

#define FPUEM_UNDERFLOW 0x10

#define FPUEM_PRECISON 0x20

#define __FORCE_INLINE__ __inline

/*----------------------------------------------------------

打开指定的浮点异常

-----------------------------------------------------------*/

__FORCE_INLINE__ static void enableFloatException(__int16 excWord = 0x000f)

{

__int16 cw;

__asm

{

not excWord

fstcw cw

mov ax , excWord

and cw , ax

fldcw cw

}

}

/*----------------------------------------------------------

关闭指定的浮点异常

-----------------------------------------------------------*/

__FORCE_INLINE__ static void disableFloatException(__int16 excWord = 0x000f)

{

__int16 cw;

__asm

{

fstcw cw

mov ax , excWord

or cw , ax

fldcw cw

}

}

int _tmain(int argc, _TCHAR* argv[])

{

int a = 10;

float b = 0;

float c;

float pi = 3.1415926/2.0 ;

__int16 cw=0x0000;

enableFloatException();

c = a/b;

disableFloatException();

c= a/b;

return c;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航