2012-01-11 8 views
7

According to cppreference.com, the C++ static_cast operator's level of precedence is 2static_cast जैसे ऑपरेटरों के लिए प्राथमिकता का स्तर क्यों है?

उन स्तरों को भी परिभाषित क्यों किया जाता है? मैं किसी भी कारण से नहीं सोच सकता। क्या कोई उदाहरण प्रदान कर सकता है? वरीयता का

+0

यदि कोई प्राथमिकता नहीं थी, तो आपका कोड अनिश्चित होगा। – RageD

+0

क्या प्राथमिकता स्तर दो कार्य के लिए प्राथमिकता के समान ही मौका है? और इसके लिए स्रोत क्या है? –

+0

+1: यह एक उचित सवाल है, उचित रूप से अच्छी तरह से कहा गया है। –

उत्तर

4

मानक प्राथमिकता स्तर को परिभाषित नहीं करता है; ये व्याकरण से व्युत्पन्न हो सकते हैं।

किसी भी अन्य वाक्य रचनात्मक सुविधा की तरह, static_cast इस व्याकरण में एक जगह है। क्योंकि इसके उपयोग के लिए ब्रांड्स की आवश्यकता होती है, इसकी ऑपरेंड अभिव्यक्ति कभी अस्पष्ट नहीं हो सकती है, लेकिन इसका मतलब यह है कि व्याकरण से इसके लिए प्राथमिकता स्तर प्राप्त करने से परेशान होने का कोई मतलब नहीं है, न कि व्याकरण में इसकी जगह अर्थहीन है। इस प्रकार मानक यहां कुछ भी पागल नहीं कर रहा है।

क्या व्यर्थ बात यह है कि आपने जो भी स्रोत उद्धृत किया है वह static_cast के लिए एक प्राथमिकता स्तर सूचीबद्ध है। यह गलत नहीं है, यह केवल व्यर्थ है।

+2

+1, अच्छा और वास्तव में उपयोगी स्पष्टीकरण:) –

3

सी ++ डाली ऑपरेटर के स्तर 2

कौन यह कहा है? मानक ऑपरेटर प्राथमिकता को परिभाषित नहीं करता है। यह एक बीएनएफ की तरह नोटेशन में व्याकरण को परिभाषित करता है।

+1

इस पर एक नज़र डालें: http://en.cppreference.com/w/cpp/language/operator_precedence –

+1

@ क्रिस्टियनअमेर: 'cppreference.com' मानक नहीं है। तो जाओ और इस पृष्ठ को लिखने वाले से पूछें। मुझे लगता है कि उसने ऐसा इसलिए किया क्योंकि औपचारिक रूप से 'static_cast' एक * पोस्टफिक्स-अभिव्यक्ति * है,' .', '->', '[]', आदि के साथ ... – ybungalobill