नीचे दिए गए कोड नमूने में मैं इस विचार से जूझ रहा हूं कि तुलना से पहले पोस्टफिक्स ऑपरेटर किसी तरह हो रहा है। मुझे पता है कि पोस्टफिक्स की उच्च प्राथमिकता है लेकिन जावा दस्तावेज़ों के अनुसार:

पोस्टफिक्स संस्करण (परिणाम ++) मूल मान का मूल्यांकन करता है।

तो इस कोड में:

    int number = 2;
    boolean bob = number < number-- * number;
    System.out.println(bob +" "+number );

नंबर होना चाहिए और 1 है जब यह आउटपुट करता है। यह अपेक्षित है। मुद्दा यह है कि बॉब झूठा है। यदि पोस्टफिक्स के बावजूद संख्या अभी भी "मूल मान" का उपयोग करती है - तो समस्या का मूल्यांकन नहीं करना चाहिए: बॉब = 2 <2 * 2, पिछली बार मैंने चेक किया था कि 2 4 से कम था? क्या दूसरी संख्या जिसे अंत में गुणा किया जा रहा है, किसी तरह 1 में बदल गई है (इससे मुझे कोई मतलब नहीं है)?

मुझे पता है कि समस्या तुलना ऑपरेटर के साथ नहीं है क्योंकि यह ठीक से काम करता है:

    number = 2;
    boolean test = 2 < number++;
    System.out.println(test);

2<2 यहाँ सही है, तो यह संख्या बढ़ाता है। पिछले उदाहरण में यह अलग क्यों है?

0
Jay Laughlin 22 फरवरी 2019, 18:58

1 उत्तर

सबसे बढ़िया उत्तर

number-- 2 का मूल्यांकन करता है, लेकिन उसके बाद number के सभी संदर्भ 1 का मूल्यांकन करते हैं। इसलिए number-- * number 2 * 1 का मूल्यांकन करता है, जो कि 2 है।

3
Ayrton 22 फरवरी 2019, 16:03