c++ - इसके अतिरिक्त सी++ प्रकार क्या है




compiler-errors type-conversion (2)

मुझे इस के लिए "अस्पष्ट कॉल" संकलन त्रुटि मिल रही है:

short i;
MyFunc(i+1, i+1);

जहां MyFunc के लिए दो परिभाषाएं हैं - एक दो शॉर्ट्स लेते हैं, और दूसरे दो फ्लोट्स लेते हैं।

जब मैं लिखता हूं:

MyFunc(i, i+1);

कोई त्रुटि नहीं है - संकलक कम कर देता है

मेरा प्रश्न यह है कि, 'छोटी' + 1 को एक अस्थायी बिंदु के रूप में कैसे प्राप्त किया जा सकता है, और मैं अपने सभी कोडों को आगे बढ़ने से कैसे बच सकता हूं और स्पष्ट रूप से कैस्ट को जोड़ना चाहता हूं जैसे कि:

MyFunc((short)(i+1), (short)(i+1));

धन्यवाद।


इसके अतिरिक्त, यदि ऑपरेंन्स int से छोटी होती हैं, तो उन्हें int को बढ़ावा दिया जाता है और i + 1 का परिणाम भी एक int अधिक के लिए इस लिंक की जांच इस बिंदु पर ओवरलोड रिज़ॉल्यूशन के दौरान फ्लोट प्रकार रूपांतरण का अभिन्न अंग होता है।


जैसा कि समझाया गया है जब अंकगणितीय संचालन में short का उपयोग करते हुए, इसे पहले एक int में परिवर्तित किया जाना चाहिए। वास्तव में, कंपाइलर सही MyFunc(int,int) खोजने की कोशिश कर रहा है और MyFunc(short,short) और MyFunc(float,float) , इसलिए अस्पष्टता







type-conversion