Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में इंक्रीमेंट और डिक्रीमेंट ऑपरेटर्स


इस एक्सप्रेशन में a > b || a != b && a == b++, ऑपरेटर प्रेसिडेंस के अनुसार && पहले || से पहले काम करेगा। इसलिए a != b && a == b++ false लौटाएगा और उसके बाद पूरा एक्सप्रेशन true लौटाएगा क्योंकि a > b true है। इसलिए परिणाम true है लेकिन b और a बदले नहीं जाएंगे और मान 2 और 1 ही रहेंगे क्योंकि a == b++ समानता की जांच कर रहा है, b++ के मान को a में असाइन नहीं कर रहा क्योंकि वहां == (रिलेशनल ऑपरेटर) है न कि = (असाइनमेंट ऑपरेटर)।

विस्तृत विश्लेषण

दिया गया एक्सप्रेशन:

a > b || a != b && a == b++

मान लें:

int a = 2, b = 1;

ऑपरेटर प्रेसिडेंस (उच्च से निम्न):

  1. ++ (पोस्ट-इंक्रीमेंट)
  2. >, !=, == (रिलेशनल/इक्वलिटी)
  3. && (लॉजिकल AND)
  4. || (लॉजिकल OR)

चरण-दर-चरण मूल्यांकन:

1. b++ का मूल्यांकन: b का वर्तमान मान 1 उपयोग होता है, फिर b 2 हो जाता है
   लेकिन ध्यान दें: a == b++ में == तुलना है, असाइनमेंट नहीं!
   
2. a == b++  →  2 == 1  →  false (b अब 2 है)
   
3. a != b    →  2 != 2  →  false (b अब 2 है)
   
4. a != b && a == b++  →  false && false  →  false
   
5. a > b     →  2 > 2  →  false (b अब 2 है)
   
6. a > b || (false)  →  false || false  →  false

परिणाम:

  • पूरा एक्सप्रेशन: false
  • अंतिम मान: a = 2, b = 2 (b इंक्रीमेंट हुआ)

इंक्रीमेंट/डिक्रीमेंट ऑपरेटर्स सारांश

ऑपरेटरनामविवरणउदाहरणपरिणाम (x=5)
++xप्री-इंक्रीमेंटपहले बढ़ाएं, फिर मान उपयोग करेंy = ++xx=6, y=6
x++पोस्ट-इंक्रीमेंटपहले मान उपयोग करें, फिर बढ़ाएंy = x++x=6, y=5
--xप्री-डिक्रीमेंटपहले घटाएं, फिर मान उपयोग करेंy = --xx=4, y=4
x--पोस्ट-डिक्रीमेंटपहले मान उपयोग करें, फिर घटाएंy = x--x=4, y=5

आम गलतियां

// गलती 1: एक्सप्रेशन में मल्टीपल इंक्रीमेंट (अनडिफाइंड बिहेवियर C/C++ में, Java में डिफाइंड लेकिन भ्रमित)
int x = 5;
int y = x++ + ++x; // Java में: 5 + 7 = 12, x=7

// गलती 2: == vs = कन्फ्यूजन
if (a = b) { ... } // असाइनमेंट! हमेशा true यदि b non-zero
if (a == b) { ... } // तुलना - सही

// गलती 3: बूलियन में इंक्रीमेंट (कंपाइल एरर)
boolean flag = true;
flag++; // ERROR - बूलियन पर लागू नहीं

सर्वोत्तम अभ्यास

  • जटिल एक्सप्रेशंस में ++/-- का उपयोग करने से बचें - पठनीयता कम होती है।
  • लूप काउंटर्स के लिए सरल उपयोग ठीक है: for (int i = 0; i < n; i++)
  • प्री/पोस्ट का अंतर समझें जब मान तुरंत उपयोग हो रहा हो।

निष्कर्ष: मूल एक्सप्रेशन a > b || a != b && a == b++ में && की प्रेसिडेंस || से अधिक है। == तुलना है असाइनमेंट नहीं। पोस्ट-इंक्रीमेंट b++ तुलना में वर्तमान मान उपयोग करता है फिर b बढ़ाता है।

  1. - पायथन में इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर

    इस लेख में, हम पायथन 3.x (या पूर्व संस्करणों) में इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर के बारे में सीखेंगे। अन्य भाषाओं में हमारे पास प्री और पोस्ट इन्क्रीमेंट और डिक्रीमेंट (++ --) ऑपरेटर होते हैं। पायथन में ऐसा कोई ऑपरेटर नहीं है। लेकिन हम इन ऑपरेटरों को नीचे चर्चा किए गए उदाहरण के रूप में लागू कर स

  1. - पायथन में इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर्स

    पायथन में C/C++/Java की तरह ++ और -- यूनरी ऑपरेटर्स नहीं हैं। पायथन में वृद्धि/कमी # इन्क्रीमेंट a += 1 # a = a + 1 के बराबर # डिक्रीमेंट a -= 1 # a = a - 1 के बराबर उदाहरण a = 0 print(fप्रारंभिक: {a}) # 0 # इन्क्रीमेंट a += 1 print(fइन्क्रीमेंट के बाद: {a}) # 1 # डिक्रीमेंट a -= 1 prin

  1. - Rails कैश में महारत: ActiveSupport में इंक्रीमेंट और डिक्रीमेंट के रहस्य

    Rails विशिष्ट स्थितियों के लिए बहुत सारे उपयोगी बिल्ट-इन टूल्स के साथ एक बड़ा फ्रेमवर्क है। इस श्रृंखला में, हम Rails के बड़े कोडबेस में छिपे कुछ कम-ज्ञात टूल्स पर एक नज़र डालेंगे। इस लेख में, हम Rails.cache में increment और decrement मेथड्स की व्याख्या करेंगे। Rails.cache हेल्पर Rails.cache आपके