यह शायद कहीं से पूछा गया था लेकिन मुझे यह नहीं मिला। क्या कोई स्पष्टीकरण दे सकता है कि यह कोड 1
को क्यों संकलित करता है और प्रिंट करता है?अजीब जावा व्यवहार आदिम प्रकारों के साथ
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
यह शायद कहीं से पूछा गया था लेकिन मुझे यह नहीं मिला। क्या कोई स्पष्टीकरण दे सकता है कि यह कोड 1
को क्यों संकलित करता है और प्रिंट करता है?अजीब जावा व्यवहार आदिम प्रकारों के साथ
long i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
यह इस रूप में पार्स किया जा रहा है:
long i = (byte)(+(char)(-(int)(+(long)(-1))));
जहां सभी +
और -
ऑपरेटरों एकल हैं +
या -
।
इस मामले में, 1
को दो बार अस्वीकार कर दिया जाता है, इसलिए यह 1
के रूप में प्रिंट करता है।
क्योंकि दोनों '+' और '-' unary operators हैं, और कलाकार उन यूनिटों के संचालन पर काम कर रहे हैं। बाकी गणित है।
एकल ऑपरेटरों और कास्टिंग :)
+1 कानूनी
(बाइट) + 1 एक बाइट के लिए +1 कास्टिंग है।
स्नीकी! मुझे सोचने को मजबूर किया।
यहां अजीब क्या है? –
@ प्रिंस जोहान वेस्ले: अच्छा, यह अजीब लग रहा है, है ना? भले ही उत्तर सरल है, और मैंने प्रश्न पोस्ट करने के बाद इसे सही समझा। –
* मुझे लगता है कि यह अजीब लग रहा है; मुझे कोई समस्या नहीं है कि कोई उस पर ध्यान देगा और विश्वास नहीं करेगा कि यह कानूनी जावा भी था। –