c = a+++b; अभिव्यक्ति **मैक्सिमल मंच (Maximal Munch)** नियम के अनुसार पार्स होती है: c = a++ + b;
पार्सिंग नियम
- लेक्सर सबसे लंबा वैध टोकन बनाता है:
a++(पोस्ट-इन्क्रीमेंट) फिर+फिरb। - यह
c = a + ++b(प्री-इन्क्रीमेंट) **नहीं** है।
उदाहरण
#include <iostream>
using namespace std;
int main() {
int a = 2, b = 5;
int c = a+++b; // पार्स: (a++) + b
cout << "c = " << c << endl; // 7 (2 + 5)
cout << "a = " << a << endl; // 3 (इन्क्रीमेंट हुआ)
cout << "b = " << b << endl; // 5 (अपरिवर्तित)
return 0;
}
आउटपुट
c = 7 a = 3 b = 5
स्पष्टता के लिए पैरेंथेसिस उपयोग करें
c = (a++) + b; // स्पष्ट: पोस्ट-इन्क्रीमेंट c = a + (++b); // स्पष्ट: प्री-इन्क्रीमेंट
संबंधित: प्रेसिडेंस और असोसिएटिविटी
- पोस्टफिक्स
++की प्रेसिडेंस प्रीफिक्स++से अधिक। - बाइनरी
+दोनों से कम प्रेसिडेंस। - इसलिए
a+++b→(a++) + b।