◐ Shell
clean mode source ↗

std::fetestexcept — cppreference.com

De cppreference.com

<metanoindex/>

<tbody> </tbody>

Déclaré dans l'en-tête

<cfenv>

int fetestexcept( int excepts );

(depuis C++11)

Détermine le sous-ensemble spécifié de la des exceptions à virgule flottante sont indiqués. Le excepts argument est un OU bit à bit de la flottant point exception des macros .

Original:

Determines which of the specified subset of the floating point exceptions are currently set. The argument excepts is a bitwise OR of the flottant point exception des macros.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Paramètres

excepts -

masque la liste des drapeaux d'exceptions à tester

Original:

bitmask listing the exception flags to test

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Retourne la valeur

OU binaire entre les macros exception de virgule flottante qui sont tous deux inclus dans excepts et correspondent aux exceptions de virgule flottante actuellement définies .

Original:

Bitwise OR of the floating-point exception macros that are both included in excepts and correspond to floating-point exceptions currently set.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Exemple

[edit]

#include <iostream>
#include <cfenv>
#include <cmath>

#pragma STDC FENV_ACCESS ON

volatile double zero = 0.0; // volatile not needed where FENV_ACCESS is supported
volatile double one = 1.0;  // volatile not needed where FENV_ACCESS is supported

int main()
{
    std::feclearexcept(FE_ALL_EXCEPT);
    std::cout <<  "1.0/0.0 = " << 1.0 / zero << '\n';
    if(std::fetestexcept(FE_DIVBYZERO)) {
        std::cout << "division by zero reported\n";
    } else {
        std::cout << "divsion by zero not reported\n";
    }

    std::feclearexcept(FE_ALL_EXCEPT);
    std::cout << "1.0/10 = " << one/10 << '\n';
    if(std::fetestexcept(FE_INEXACT)) {
        std::cout << "inexact result reported\n";
    } else {
        std::cout << "inexact result not reported\n";
    }

    std::feclearexcept(FE_ALL_EXCEPT);
    std::cout << "sqrt(-1) = " << std::sqrt(-1) << '\n';
    if(std::fetestexcept(FE_INVALID)) {
        std::cout << "invalid result reported\n";
    } else {
        std::cout << "invalid result not reported\n";
    }
}

Résultat :

1.0/0.0 = inf
division by zero reported
1.0/10 = 0.1
inexact result reported
sqrt(-1) = -nan
invalid result reported

Voir aussi

efface les indicateurs d'état spécifiées à virgule flottante

Original:

clears the specified floating-point status flags

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(fonction) [edit]