इस मामले में, printf
द्वारा प्राप्त पैरामीटर int
टाइप होंगे।
सबसे पहले, कुछ भी आप (पहले पैरामीटर को छोड़कर) printf के पास से होकर गुजरती है "डिफ़ॉल्ट प्रचार", जिसका अर्थ है (अन्य बातों के अलावा) कि char
और short
दोनों पारित किया जा रहा से पहले int
करने के लिए प्रोत्साहित कर रहे हैं। तो, भले ही आप जो भी पारित कर रहे थे, उसके पास टाइप चार हो, जब तक यह printf
तक पहुंच गया, तो इसमें int
टाइप होगा। आपके मामले में, आप एक वर्ण शाब्दिक का उपयोग कर रहे हैं, जो पहले से ही int
टाइप कर रहा है।
स्कैनफ के साथ भी यही सच है, और अन्य फ़ंक्शन जो विविधता पैरामीटर लेते हैं।
एक पूर्णांक चरित्र निरंतर प्रकार int है:
दूसरा, यहां तक कि डिफ़ॉल्ट पदोन्नति के बिना, सी में चरित्र शाब्दिक पहले से ही वैसे भी प्रकार int
(§6.4.4.4/10) है।
इसलिए, इस मामले में मान प्रकार int
के साथ शुरू और उन्हें प्रचारित नहीं कर रहे हैं - लेकिन आप char
है, की तरह कुछ के साथ शुरू किया, भले ही:
char a = 'a';
printf("%d", a);
... क्या printf
प्राप्त करता है int
प्रकार का होगा, वैसे भी char
टाइप न करें।
स्रोत
2010-10-18 13:36:41
% d एक हस्ताक्षरित पूर्णांक है, बाइट की संख्या शामिल ... – leppie
@leppie बारे में कुछ नहीं कहना है: हालांकि, यह बाइट्स के कुछ निश्चित संख्या के साथ प्रदान किया जाने वाला है, और 'printf' की एक निश्चित संख्या लेने के लिए है इसके लिए ढेर से बाइट्स, और इन निश्चित संख्याओं को एक जैसा होना चाहिए। –
'' a'' 'टाइप 'int' नहीं' char' है। –