क्यों नहीं `सूचकांक = सूचकांक ++` `वेतन वृद्धि index` करता है?

वोट
0

** Dup: क्या के बीच एक्स = एक्स ++ अंतर है; बनाम एक्स ++ ;? **

तो, भले ही मैं जानता हूँ कि आप वास्तव में इस कोड में ऐसा कभी नहीं होगा, मैं अभी भी उत्सुक हूँ:

public static void main(String[] args) {
    int index = 0;
    System.out.println(index);   // 0
    index++;
    System.out.println(index);   // 1
    index = index++;
    System.out.println(index);   // 1
    System.out.println(index++); // 1
    System.out.println(index);   // 2
}

ध्यान दें कि 3 sysoutअब भी है 1। मेरे मन में लाइन index = index++;सूचकांक के सूचकांक निर्धारित करते हैं, तो 1 से सूचकांक को बढ़ा में एक ही तरह से इसका मतलब है System.out.println(index++);इसका मतलब है println विधि के लिए सूचकांक पारित तो 1 से सूचकांक को बढ़ा देते।

हालांकि यह मामला नहीं है। किसी को भी व्याख्या कर सकते हैं क्या हो रहा है?

09/12/2008 को 23:00
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


8 जवाब

वोट
4

इस डुप्लिकेट सवाल है।

संपादित करें: ओह पी अच्छी तरह से: मैं मूल खोजने के लिए नहीं कर पा रहे

एक = एक ++ postincrement, जो आपके संकलक के रूप में व्याख्या का उपयोग करता है:

a = function() {
   var old_value = a;
   a++;
   return old_value;
}

संपादित करें 2: क्या एक्स = एक्स ++ के बीच का अंतर है, बनाम एक्स ++ ;?

09/12/2008 को 23:01
का स्रोत उपयोगकर्ता

वोट
3

value++; पोस्ट वेतन वृद्धि है।

int firtValue = 9;
int secondValue = firstValue++;

firstValue अब 10 है, लेकिन secondValue 9, firstValue का मूल्य इससे पहले कि यह संख्या बढ़ गया था।

अब पूर्व वेतन वृद्धि के साथ:

int firtValue = 9;
int secondValue = ++firstValue;

firstValue और secondValue अब 10, fistValue वृद्धि की जाती है और फिर अपने मूल्य secondValue को asigned है।

09/12/2008 को 23:04
का स्रोत उपयोगकर्ता

वोट
1

मैं इस तरह कुछ भी करने की कोशिश की कभी नहीं किया है, लेकिन मैं होने के लिए कि काम वेतन वृद्धि के बाद क्या होता तैयार हूँ।

तो क्या वास्तव में होता है जहाँ तक संकलक संबंध है:

  1. सूचकांक का मूल्यांकन करें
  2. बाद में सूचकांक का मूल्य रखें
  3. सूचकांक के मूल्य को बढ़ा
  4. सूचकांक के पुराने मान निर्दिष्ट करें, इस प्रकार वेतन वृद्धि का सफाया।
09/12/2008 को 23:05
का स्रोत उपयोगकर्ता

वोट
1

बाद वेतन वृद्धि ऑपरेटर index++चर वृद्धि कर देता है, फिर भी अपने पुराने मान देता है, इस प्रकार

int i = 5;
System.out.println(i++);

प्रिंट होगा 5 अभी तक मैं अब 6 के बराबर है।

आप वेतन वृद्धि आपरेशन उपयोग के बाद मान देने के लिए चाहते हैं, तो ++index

09/12/2008 को 23:04
का स्रोत उपयोगकर्ता

वोट
1

के बाद अभिव्यक्ति का मूल्यांकन किया गया है काम होता है। सूचकांक तो ++ हालांकि के रूप में एक पक्ष प्रभाव सूचकांक वृद्धि की जाती है, 0 के एक मूल्य है। तब मूल्य (0) सूचकांक को सौंपा गया है।

09/12/2008 को 23:02
का स्रोत उपयोगकर्ता

वोट
0

आपको चीजों मूल्यांकन किया जाता है को देखने के लिए की है।

निम्नलिखित बयान में

सूचकांक = सूचकांक ++;

तीन चीज़ें हो 1) के बाद से यह सूचकांक ++ है, सूचकांक के मूल्य 2 निर्धारित किया जाता है) सूचकांक वृद्धि की जाती है, 3) मूल्य उस चरण में निर्धारित किया गया था तो समीकरण के बाएं हाथ की ओर चर को असाइन किया गया

09/12/2008 को 23:06
का स्रोत उपयोगकर्ता

वोट
-1

देखें http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html पोस्टफ़िक्स मूल्यांकन नियमों के बारे में जानकारी के लिए।

यह भी देखें http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#39438 जानकारी के लिए।

09/12/2008 को 23:06
का स्रोत उपयोगकर्ता

वोट
-1

का जवाब इस सवाल मदद करनी चाहिए। पोस्ट वेतन वृद्धि सूचकांक का मान अपडेट करता है, लेकिन यह अद्यतन पहले मान देता है।

09/12/2008 को 23:04
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more