यदि मैं #define
में एक पूर्ण संख्या का उपयोग करता हूं, तो data type
क्या यह C99
में sprintf()
में माना जाता है?#define में पूरा डेटा किस डेटा प्रकार है?
#define NUMBER 100
sprintf(buf, "%i\n", NUMBER); // is it %i, %u, %lu ?
यदि मैं #define
में एक पूर्ण संख्या का उपयोग करता हूं, तो data type
क्या यह C99
में sprintf()
में माना जाता है?#define में पूरा डेटा किस डेटा प्रकार है?
#define NUMBER 100
sprintf(buf, "%i\n", NUMBER); // is it %i, %u, %lu ?
#define NUMBER1 100 /* int: use "%d" or "%i" in printf() */
#define NUMBER2 100U /* unsigned int: use "%u" in printf() */
#define NUMBER3 100L /* long int: use "%ld" or "%li" in printf() */
#define NUMBER4 100UL /* unsigned long int: use "%lu" in printf() */
/* C99 */
#define NUMBER5 100LL /* long long int: use "%lld" or "%lli" in printf() */
#define NUMBER6 100ULL /* unsigned long long int: use "%llu" in printf() */
नोट: यू और एल भी लोअरकेस
टिप्पणी 2 में हो सकता है: यू से पहले या एल के बाद आ सकता है या डालूँगा
बहुत अच्छा जवाब मुझे यह नहीं पता था। –
उस शाब्दिक प्रकार का प्रकार int
है। आपको %d
या %i
का उपयोग करना चाहिए।
NUMBER
प्रीप्रोसेसर द्वारा संकलित करते समय शाब्दिक रूप से 100
के साथ प्रतिस्थापित हो जाता है। तथ्य यह है कि यह एक मैक्रो का मतलब है कंपाइलर के लिए कुछ भी नहीं, क्योंकि संकलक कभी भी NUMBER
नहीं देखता है; कंपाइलर केवल 100
देखता है।
सभी #define
-d आइटम सीधा पाठ प्रतिस्थापन कर रहे हैं: कल्पना कीजिए कि 100
NUMBER
पहचानकर्ता के बजाय में चिपकाया जाता है:
sprintf(buf, "%i\n", NUMBER);
// ^^^ It's sprintf, don't forget the buffer!
100
के बाद से एक पूर्णांक शाब्दिक, आप %d
का उपयोग करना चाहिए है।
आप सही हैं, मैं sprintf() में चर भूल गया! –
क्या यह 'sprintf ("% i \ n ", 100)' के बराबर नहीं होगा? –
थंब का नियम: एक मैक्रो टेक्स्ट कॉपी-एंड-पेस्ट है। :) – Mysticial