प्रारूप विनिर्देशक के रूप में कब %d
और क्या %i
उपयोग किया जाता है printf
?
प्रारूप विनिर्देशक के रूप में कब %d
और क्या %i
उपयोग किया जाता है printf
?
जवाबों:
वे समान हैं जब आउटपुट के लिए उपयोग किया जाता है, उदाहरण के लिए printf
।
हालाँकि, इनपुट के रूप में उपयोग किए जाने पर ये अलग-अलग होते हैं, उदाहरण के लिए scanf
, जहां %d
एक पूर्णांक को एक हस्ताक्षरित दशमलव संख्या के रूप में स्कैन किया जाता है, लेकिन %i
दशमलव में चूक होती है , लेकिन हेक्साडेसिमल (यदि पूर्ववर्ती 0x
) और अष्टक (यदि पूर्ववर्ती हो 0
) की अनुमति देता है।
तो 033
27 के साथ होगा %i
लेकिन 33 के साथ %d
।
printf
और scanf
।
ये समान हैं, printf
लेकिन अलग हैं scanf
। printf
दोनों के लिए , एक हस्ताक्षरित दशमलव पूर्णांक को नामित %d
और %i
नामित करना। के लिए scanf
, %d
और %i
यह भी एक हस्ताक्षर किए पूर्णांक का मतलब है , लेकिन %i
इनपुट को हेक्साडेसिमल नंबर के रूप में सूचित करता है यदि पूर्ववर्ती 0x
और अष्टक यदि पूर्ववर्ती है 0
और अन्यथा इनपुट को दशमलव के रूप में व्याख्या करता है।
वहाँ कोई अंतर नहीं है %i
और %d
प्रारूप विनिर्देशक के लिए printf
। हम इसे C99 मानक सेक्शन के मसौदे पर जाकर देख सकते हैं 7.19.6.1
। फ़र्फ़रफ़ फ़ंक्शन जो printf
प्रारूप विनिर्देशकों के संबंध में भी है और यह पैरा 8 में कहता है :
रूपांतरण विनिर्देशक और उनके अर्थ हैं:
और निम्नलिखित बुलेट शामिल हैं:
d,i The int argument is converted to signed decimal in the style [−]dddd. The precision specifies the minimum number of digits to appear; if the value being converted can be represented in fewer digits, it is expanded with leading zeros. The default precision is 1. The result of converting a zero value with a precision of zero is no characters.
दूसरी ओर scanf
एक अंतर है, %d
आधार 10 मान लीजिए जबकि %i
ऑटो आधार का पता लगाता है। हम इसे अनुभाग पर जाकर देख सकते हैं 7.19.6.2
fscanf फ़ंक्शन जो scanf
प्रारूप विनिर्देशक के संबंध में कवर करता है, पैरा 12 में यह कहता है:
रूपांतरण विनिर्देशक और उनके अर्थ हैं:
और निम्नलिखित शामिल हैं:
d Matches an optionally signed decimal integer, whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument shall be a pointer to signed integer. i Matches an optionally signed integer, whose format is the same as expected for the subject sequence of the strtol function with the value 0 for the base argument. The corresponding argument shall be a pointer to signed integer.