यह अंकगणितीय परिचालनों के जावा के मूल्यांकन को समझने के लिए सैद्धांतिक प्रश्न है। चूंकि +
और -
की वही प्राथमिकता है, इसलिए मुझे समझ में नहीं आता कि जावा निम्नलिखित अभिव्यक्तियों का मूल्यांकन कैसे करता है (जहां दो ऑपरेटरों के बीच एक से अधिक +
और -
ऑपरेटर हैं)।एकाधिक + और - ऑपरेटरों के लिए जावा प्राथमिकता
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a+-b); // results in -1
System.out.println(a-+b); // results in -1
System.out.println(a+-+b); // results in -1
System.out.println(a-+-b); // results in 3
System.out.println(a-+-+b); // results in 3
System.out.println(a+-+-b); // results in 3
System.out.println(a-+-+-b); // results in -1
System.out.println(a+-+-+b); // results in 3
}
जावा 8 भाषा विशिष्टता (§15.8.2) से: जब संख्यात्मक प्रकार के दो ऑपरेंड के लिए आवेदन किया, ऑपरेंड की राशि उत्पादन
द्विआधारी + ऑपरेटर इसके अलावा प्रदर्शन करती है।
द्विआधारी - ऑपरेटर दो संख्यात्मक संचालन के अंतर का उत्पादन करते हुए घटाव करता है।
[...]
यदि ऑपरेंड अभिव्यक्तियों का कोई दुष्प्रभाव नहीं है तो जोड़ एक कम्यूटिव ऑपरेशन है।
ऑपरेटर सहयोगी होते हैं जब ऑपरेंड एक ही प्रकार के होते हैं।
मैंने जो भी देखा, यह है कि हर बार # ऑपरेटर भी होता है, परिणाम वही होता है और आदेश कोई फर्क नहीं पड़ता। लेकिन जब # ऑपरेटर अजीब हैं, तो यह परिणाम को प्रभावित नहीं करता है। जैसे निम्नलिखित दो अभिव्यक्तियों में +
से एक और -
है, हालांकि परिणाम अलग है।
System.out.println(a-+-b); // results in 3
System.out.println(a-+-+-b); // results in -1
उस जानकारी के साथ मुझे अभी भी पैटर्न या जिस तरह से यह काम करता है, उसे नहीं देखते हैं।
मुझे विश्वास * ए + -बी * को * ए + (-बी) * के रूप में निष्पादित किया जाता है। इसे जांचने के लिए –
@ संकेत मकानी '--' और' ++ 'की अनुमति नहीं है क्योंकि जावा इसे वृद्धि/कमी ऑपरेशन के रूप में लेता है – ncw