C ++ fesetexceptflag () - C ++ मानक पुस्तकालय

C ++ में fesetexceptflag () फ़ंक्शन एक पॉइंटर ऑब्जेक्ट से फ्लोटिंग पॉइंट एनवायरनमेंट में फ्लोटिंग पॉइंट अपवाद फ्लैग सेट करता है।

Fesetexceptflag () फ़ंक्शन को हेडर फ़ाइल में परिभाषित किया गया है।

fesetexceptflag () प्रोटोटाइप

 int fesetexceptflag (कॉन्स्ट fexcept_t * flagp, int एक्सेप्ट);

Fesetexceptflag () फ़ंक्शन फ़्लोटिंग से फ़्लोटिंग पॉइंट एनवायरनमेंट में निर्दिष्ट फ़्लोटिंग पॉइंट अपवाद फ़्लैग की सभी सामग्रियों को कॉपी करने का प्रयास करता है।

यह फ़ंक्शन केवल झंडे को संशोधित करता है और कोई अपवाद नहीं बढ़ाता है।

fesetexceptflag () पैरामीटर

  • flagp: एक सूचक को एक fexcept_t ऑब्जेक्ट जहां झंडे से पढ़ा जाएगा।
  • छूट: सेट करने के लिए अपवाद झंडे की बिटमास्क लिस्टिंग।
बिटमास्क ने मैक्रों को स्वीकार कर लिया
मैक्रो प्रकार विवरण
FE_DIVBYZERO ध्रुव त्रुटि शून्य से विभाजन
FE_INEXACT निष्प्राण सटीक परिणाम नहीं जैसे (1.0 / 3.0)
FE_INVALID डोमेन त्रुटि कम से कम एक तर्क का उपयोग किया जाता है जिसके लिए फ़ंक्शन परिभाषित नहीं है
FE_OVERFLOW अतिप्रवाह सीमा त्रुटि परिणाम प्रकार में बहुत बड़ा होता है जिसका रिटर्न प्रकार द्वारा प्रतिनिधित्व किया जाता है
FE_UNDERFLOW अंडरफ्लो रेंज एरर परिणाम प्रकार में बहुत छोटा होता है जिसे रिटर्न प्रकार द्वारा दर्शाया जाता है
FE_ALL_EXCEPT सभी अपवाद कार्यान्वयन द्वारा समर्थित सभी अपवाद

fesetexceptflag () वापसी मान

  • Fesetexceptflag () फ़ंक्शन सफलता पर शून्य देता है, नॉनज़ेरो अन्यथा।

उदाहरण: fesetexceptflag () फ़ंक्शन कैसे काम करता है?

 #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) int main() ( fexcept_t excepts; feraiseexcept(FE_DIVBYZERO); /* save current state*/ fegetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); feraiseexcept(FE_INVALID|FE_OVERFLOW); print_exceptions(); /* restoring previous exceptions */ fesetexceptflag(&excepts,FE_ALL_EXCEPT); print_exceptions(); return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 उठाया गया अपवाद: FE_DIVBYZERO बढ़ा हुआ अपवाद: FE_DIVBYZERO FE_INVALID FE_OVERFLOW उठाया गया अपवाद: FE_DIVBYZERO

दिलचस्प लेख...