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

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -