//浮点异常的控制位
#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;
}