यदि short
स्वचालित रूप से int
अंकगणितीय संचालन में पदोन्नत किया जाता है, तो क्यों है:
short thirty = 10 * 3;
short
चर के लिए एक कानूनी काम thirty
?
बदले में, यह:
short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
साथ में यह भी:
int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
संकलित नहीं करता है क्योंकि किसी int
मान को असाइन करने short
की अनुमति के बिना कास्टिंग की अनुमति नहीं है।
क्या संख्यात्मक शाब्दिकों के बारे में कुछ खास चल रहा है?
10 * 3
परिणाम के साथ चर की गणना करता है और आरंभ करता है। आपके गैर-कामकाजी उदाहरण में गणना रनटाइम पर होती है जहां जेवीएम शॉर्ट डालता है।
final int ten = 10; final int three = 3; short thirty = ten * three;
ठीक संकलन करता है।
If short is automatically promoted to int in arithmetic operations
- यह प्रासंगिक नहीं है। न तो शॉर्ट्स हैं और न 10
ही 3
उन्हें बढ़ावा दिया जाता है, वे शाब्दिक हैं।
10
और संकलक द्वारा 3
मूल्यांकन किया जाता है int
?
short thirty = 10 * 3;
संभवत:short thirty = 30;
संकलक द्वारा प्रतिस्थापित किया जाता है जो कि एक मान्य कथन है। (मुझे प्रासंगिक JLS अनुभाग देखना होगा)।