एक फ़ंक्शन कॉल करते समय unsigned char
स्वचालित रूप से int
पर प्रचारित क्यों किया जाता है? नीचे दिए गए उदाहरण में f(int)
और f(char)
फ़ंक्शन है। यह अधिक तार्किक लग रहा था कि संकलक unsigned char
तर्क को char
पर तर्क देगा और f(char)
पर कॉल करेगा क्योंकि उनके पास समान संख्या में बिट्स हैं। यह f(int)
को इसके बजाए कॉल कर रहा है, भले ही इसका अर्थ अधिक बिट्स के साथ किसी प्रकार के तर्क को बढ़ावा देना है। कोई संकेतक जहां नियम परिभाषित किया गया है? मानक या कंपाइलर/मंच विशिष्ट?बिना हस्ताक्षरित चार स्वचालित रूप से फ़ंक्शन कॉल में int को प्रचारित किया जाता है, क्यों?
void f(int)
void f(char)
void f(int)
'हस्ताक्षरित चार' के सभी संभावित मानों को 'int' द्वारा दर्शाया जा सकता है। वे सभी को हस्ताक्षरित 'char' द्वारा प्रदर्शित नहीं किया जा सकता है। –