2010-09-23 2 views
19

में घातीय ऑपरेटर सी ++ में कक्षा ले रहा हूं और मैंने देखा कि उपयोग करने के लिए केवल कुछ गणित ऑपरेटर हैं। मैंने यह भी देखा कि सी ++ अपनी गणित पुस्तकालय के भीतर एक घातीय ऑपरेटर के साथ नहीं आता है।सी ++

इस के लिए हमेशा एक फ़ंक्शन क्यों लिखना चाहिए? क्या इस ऑपरेटर को छोड़ने के लिए सी ++ के निर्माताओं के लिए कोई कारण है?

+0

मैंने व्यापक रूप से उपयोग किए जाने वाले और प्रमाणित कोबोल कंपाइलर के लिए एक सीमित तरीके (एक्सपोनेंट में कोई अंश नहीं) में एक्सपोनेंटिएशन लागू किया। किसी ने कभी भी सीमा को नहीं देखा: कम से कम, किसी ने कभी भी इसे एक बग के रूप में नहीं बताया। अगर उनके पास होता, तो मैं इसे लॉगरिदम और उसके साथ तय करता। – EJP

उत्तर

47

आप इस के लिए कोई फ़ंक्शन नहीं लिखते (जब तक कि आप पागल नहीं हो जाते)। <cmath> शीर्षलेख में परिभाषित किया गया है।

एक तरफ: आप एक शक्ति ऑपरेटर के रूप में ^ इस्तेमाल करने की कोशिश, के रूप में कुछ लोगों को ऐसा करने के लिए अभ्यस्त हैं, तो आप एक बुरा आश्चर्य के लिए में हो जाएगा अगर। यह अनन्य-या (एक्सओआर) ऑपरेटर है (here देखें)।

+6

सुंदर^जाल;) – Marlon

+13

यह केवल '1^0' के लिए काम करता है। – dan04

+0

हा! मुझे अभी पता चला है कि^एक ओआर ऑपरेटर है;) –

9

अधिकांश सी संचालन आसानी से एक एकल प्रोसेसर अनुदेश को मैप किया करने का इरादा जब सी आविष्कार किया गया था। उस समय, एक्सपोनेंटिएशन मशीन निर्देश नहीं था, इस प्रकार लाइब्रेरी दिनचर्या।

+0

"इरादा" बहुत मजबूत हो सकता है। सी * ने * युग के सामान्य आर्किटेक्चर के निर्देश सेट पर काफी सीधे नक्शा किया, लेकिन मैंने कभी भी के * या * आर को नहीं पढ़ा है "हम उस सुविधा में नहीं हो सकते हैं, यह मशीन कुछ नहीं करता है ..." । – dmckee

+1

असल में, फ्लोट-टू-इंट कास्ट और बैक अंतर्निहित हैं, यानी ऑपरेशन की आवश्यकता नहीं है, लेकिन वे एक प्रोसेसर निर्देश से कहीं अधिक महंगे थे। – MSalters

+0

@MSalters: फ़्लोट-टू-इंट जबरन बुरा है; मुझे लगता है कि पास्कल ऐसी अवधारणाओं को और अधिक अच्छी तरह से संभालता है (उन मामलों के लिए अलग 'राउंड' और 'ट्रंक' कार्यों का उपयोग करके जहां कोई गोलाकार या छोटा परिणाम चाहता है)। – supercat

-2

आप किस प्लेटफ़ॉर्म और किस कंपाइलर का उपयोग कर रहे हैं? मेरा अनुमान टर्बोसी है। अधिकतर cmath फ़ाइल में अधिकांश कंप्यूटर्स में शामिल गणितीय फ़ंक्शन शामिल हैं।

+1

घर पर एक्सकोड, स्कूल में विजुअल स्टूडियो। –

7

अपनी पुस्तक में बजेर्न स्ट्राउस्ट्रप के अनुसार सी ++ का डिज़ाइन और विकास। उन्होंने घातीय ऑपरेटर से बचने का फैसला किया क्योंकि:

  • एक ऑपरेटर उल्लेखनीय सुविधा प्रदान करता है, लेकिन कोई नई कार्यक्षमता प्रदान नहीं करता है। कार्यकारी/इंजीनियरिंग गणना के भारी उपयोगकर्ताओं का प्रतिनिधित्व करने वाले कार्यकारी समूह के सदस्यों ने संकेत दिया कि ऑपरेटर सिंटैक्स मामूली वाक्य रचनात्मक सुविधा प्रदान करता है।
  • सी ++ का हर उपयोगकर्ता इस नई सुविधा
  • उपयोगकर्ता सिस्टम डिफ़ॉल्ट है, जो एक आंतरिक ऑपरेटर के साथ संभव नहीं होगा के लिए अपने स्वयं के विशेष घातांक कार्यों susbtituting के महत्व पर बल दिया है सीखना चाहिए
  • प्रस्ताव पर्याप्त रूप में अच्छी तरह से नहीं है प्रेरित किया। विशेष रूप से, एक 30000 लाइन फोरट्रान कार्यक्रम को देखकर एक निष्कर्ष नहीं निकाल सकता है कि ऑपरेटर व्यापक रूप से सी में इस्तेमाल किया जाएगा ++
  • प्रस्ताव एक नया ऑपरेटर जोड़ने और एक अन्य पूर्वता स्तर जोड़ने इस प्रकार भाषा की जटिलता में वृद्धि की आवश्यकता है
+1

एक एक्सपोनिएशन ऑपरेटर इस तरह के कंप्यूटेशंस को संकलन-समय-निरंतर अभिव्यक्तियों के भीतर शामिल करने की अनुमति देगा। इस तरह के परिचालनों का उपयोग बड़ी मात्रा में नहीं किया जाता है, लेकिन निश्चित रूप से वे समय होते हैं जब वे सहायक हो सकते हैं। – supercat

+0

constexpr हल करता है कि – sp2danny