.


:




:

































 

 

 

 


,




, . , _controlfp , . , , , , . .

DWORD _controlfp(DWORD new, DWORD mask)

(current_mask) :

(current_mask & ~mask) | (new & mask)

, new, mask. , mask, . FP- , , , , .

. , (current_mask), , . , mask 0xFFFFFFFF, new, , , .

, , , mask MCW_EM, . , FP- _clearfp.

#include <float.h>

DWORD FPOld, FPNew; /* . */

FPOld = _controlfp(0, 0); /* . */

/* . */

FPNew = FPOld & ~(EM_OVERFLOW | EM_UNDERFLOW | EM_INEXACT | EM_ZERODIVIDE | EM_DENORMAL | EM_INVALID);

/* . MCW_EM , . */

_controlfp(FPNew, MCW_EM);

while() __try { /* . */

/* FP-. */

} __except(EXCEPTION_EXECUTE_HANDLER) {

/* FP-. */

_clearfp(); /* . */

_controlfp(FPOld, 0xFFFFFFFF); /* . */

}

FP-, EXCEPTION_FLT_STACK_CHECK, . -, , EM_OVERFLOW. 4.3 .





:


: 2015-09-20; !; : 496 |


:

:

. .
==> ...

1659 - | 1588 -


© 2015-2024 lektsii.org - -

: 0.015 .