C और C++ अभिव्यक्ति(int)+4*5 की अनुमति क्यों देते हैं?




casting language-lawyer (2)

इसकी व्याख्या इस प्रकार है ((int)(+4)) * 5 । यही है, एक अभिव्यक्ति +4 (एक शाब्दिक प्लस ऑपरेटर एक शाब्दिक 4 लागू होता है), सी-स्टाइल कास्ट के साथ int टाइप करने के लिए डाली जाती है, और परिणाम 5 गुणा होता है।

(int) + 4*5;

यह क्यों (मूल्य के साथ एक प्रकार को जोड़ना) संभव है? (जी ++ और जीसीसी के साथ की कोशिश की।)

मुझे पता है कि इसका कोई मतलब नहीं है (और इसका कोई प्रभाव नहीं है), लेकिन मैं जानना चाहता हूं कि यह क्यों संभव है।


यहां + अनरीरी + ऑपरेटर है , न कि बाइनरी एडिशन ऑपरेटर । यहाँ कोई जोड़ नहीं है।

साथ ही, टाइपकास्ट करने के लिए वाक्य रचना (int) का उपयोग किया जाता है।

आप उस कथन को फिर से पढ़ सकते हैं

(int) (+ 4) * 5;    

जिसे के रूप में पार्स किया जाता है

((int) (+ 4)) * (5);    

जो कहते हैं,

  1. पूर्णांक निरंतर मान 4 पर यूनीरी + ऑपरेटर लागू करें।
  2. एक कस्टम टाइपकास्ट
  3. 5 ऑपरेंड के साथ गुणा करें

यह (int) (- 4) * (5); , जहां एकात्मक ऑपरेटर का उपयोग अधिक परिचित है।

आपके मामले में, एकता + और int टू कास्ट - दोनों निरर्थक हैं।






language-lawyer