i+++j
i++ + j
के बराबर है।
इसका ऑपरेटर प्राथमिकता से कोई लेना देना नहीं है। +++
को अभिव्यक्तियों से पहले संकलक द्वारा ++ +
पर हल किया गया है।
सी मानक अनुवाद चरणों के अनुक्रम को परिभाषित करता है, प्रत्येक प्रत्येक इनपुट के पिछले इनपुट के रूप में उपयोग करता है। +++
चरण 3 में ++ +
को हल किया गया है, जो स्रोत को प्रोप्रोसेसर टोकन में विघटित करता है। ऑपरेटर प्राथमिकता चरण 7, वाक्य रचनात्मक और अर्थपूर्ण विश्लेषण तक नहीं माना जाता है। (अनुवाद चरणों अलग चरणों के रूप में लागू किया जाना है या नहीं गुजरता है, लेकिन संकलक अगर वे कर रहे हैं के रूप में व्यवहार करना चाहिए।)
नियमों का कहना है कि +++
++ +
को हल हो गई है और न + ++
क्या अनौपचारिक रूप से कहा जाता है कि " अधिकतम मर्च नियम "। यह में खंड 6.4 अनुच्छेद 4 में कहा गया है: इनपुट धारा पूर्व प्रसंस्करण में पार्स किया गया है
तो एक दिया चरित्र अप करने के लिए टोकन, अगले preprocessing टोकन अक्षर हैं जो एक पूर्व प्रसंस्करण टोकन का गठन कर सकता है की सबसे लंबी अनुक्रम है।
(Amusingly, सूचकांक करने के लिए "अधिक से अधिक मंच" संदर्भित करता है, लेकिन यह है कि अवधि मानक में और कहीं भी उल्लेख नहीं है।)
यह भी संकेत मिलता है कि i+++++j
, जो के रूप में किया जा सकता है tokenized वैध अभिव्यक्ति i++ + ++j
, वास्तव में i ++ ++ + j
है, जो एक वाक्यविन्यास त्रुटि है।
बेशक, एक प्रोग्रामर के लिए समाधान, टोकन को विभाजन में स्पष्ट बनाने के लिए व्हाइटस्पेस जोड़ना है: i++ + j
। (i+++j
पूरी तरह से संकलक के लिए स्पष्ट है, लेकिन i++ + j
ज्यादा एक मानव पाठक के लिए स्पष्ट है।)
संदर्भ: N1570, खंड 6.4, पैरा 4. N1570 2011 आईएसओ सी मानक के एक मसौदे है। यह नियम मानक के पुराने संस्करणों से अपरिवर्तित है। अनुवाद चरणों पर चर्चा की जाती है
स्रोत
2013-09-01 19:16:52
हां, पोस्टफिक्स वृद्धि/कमी में उच्च प्राथमिकता है। –
इतने सारे डुप्लिकेट हैं लेकिन उन्हें खोजने में मुश्किल होती है क्योंकि +++ खोज शब्द के रूप में काम नहीं कर रहा है। –
@ShashankKadne: ऑपरेटर प्राथमिकता के साथ इसका कोई लेना-देना नहीं है। –