Doubt regarding operators in C/C++/Java -
अनुरूपण के टुकड़े पर विचार करें:
int a, b; ए = 1; बी = 2; C = a ++++ b; // काम नहीं करता!! समेकन की त्रुटि। सी = ए ++ * + बी; // काम करता है !! कृपया C = a ++++ b;
को इस प्रकार माना जाता है:
c = ((a ++) ++) b;
जो गैर-लावलु को बढ़ाने की कोशिश कर रहे हैं, वह गलत है।
और
c = a ++ * b;
इस प्रकार माना जाता है:
c = (a ++) * (+ b);
इस व्यवहार का कारण यह है: सी भाषा लेक्सिकल विश्लेषक है।
मामले में 1: टोकन 'ए' (पहचानकर्ता) के बाद लेक्सर देखता + एक और + के बाद, तो यह एक ही टोकन के हिस्से के रूप में दोनों (वेतन वृद्धि ऑपरेटर के रूप में) का उपयोग करता है यह एक समान टोकन का तीसरा हिस्सा नहीं है क्योंकि +++ मान्य टोकन नहीं है। इसी तरह, अगले दो + + टोकन में इसे प्रभावी रूप से समान रूप से बना देता है:
c = ((a ++) ++) b;
जो एक ++ के रूप में सही नहीं है, कोई लावलू नहीं लौटाएगा, इसलिए आप उस पर ++ को लागू नहीं कर सकते। 5 ++;
कहने की तरह कुछ है, लेकिन 2 में: ++ की पहली जोड़ी एक साथ (वेतन वृद्धि ऑपरेटर के रूप में) समूहबद्ध हो जाएगी। अगला * अकेले एक टोकन होगा क्योंकि आप इसे एक + के रूप में + + एक मान्य टोकन नहीं जोड़ सकते हैं। आखिरकार + एक टोकन (जैसा कि अयोग्य +) प्रभावी रूप से आपके कथन के रूप में बनायेगा:
c = (a ++) * (+ b);
आप कोष्ठक या सफेद स्थान का उपयोग करके निम्न प्रकार के लोभी व्यवहार को ओवरराइड कर सकते हैं:
c = a ++ + b; सी = ए ++ * + बी;
Comments
Post a Comment