में अजीब चीजें जावा में कुछ अजीब चीजें मिलीं।जावा
कोड:
System.out.println(System.getProperty("java.version"));
System.out.println((true) ? (int)2.5 : 3.5);
System.out.println((true) ? (int)2.5 : 3);
System.out.println((true) ? (int)2.5 + "" : 3.5);
परिणाम:
1.8.0_40 2.0 2 2
यह क्या है? क्यों पूर्णांक मान केवल तभी लौटाता है जब गलत के लिए मान डबल नहीं है या यदि स्ट्रिंग मान सत्य के लिए मूल्य में जोड़ा गया है? दूसरी लाइन राउंडिंग में क्यों (int) कास्ट किया जाता है, लेकिन दोहरे मूल्य अभी तक लौटते हैं? क्या यह एक बग है?
नहीं, ये चीजें बग नहीं हैं। – Jesper
जहां तक कंपाइलर का संबंध है, पूरे '?:' अभिव्यक्ति के लिए केवल एक ही प्रकार है, और यह दोनों पक्षों के बीच सबसे संकीर्ण प्रकार को सामान्य रूप से ढूंढकर पता लगाता है। –
(मुझे विश्वास है कि मुझे आश्चर्य है कि अंतिम पंक्ति संकलित है, हालांकि।) –