printf
समारोह एक तर्क प्रकार, इस तरह के रूप %d
या %i
एक signed int
के लिए ले जाता है। हालांकि, मुझे long
मान के लिए कुछ भी दिखाई नहीं देता है।प्रिंटफ के लिए तर्क क्या है जो लंबे समय तक प्रारूपित करता है?
उत्तर
एक l
(लोवरकेस पत्र एल) रखो सीधे विनिर्देशक से पहले देखते हैं।
unsigned long n;
long m;
printf("%lu %ld", n, m);
मुझे लगता है कि आप का मतलब:
unsigned long n;
printf("%lu", n); // unsigned long
या
long n;
printf("%ld", n); // signed long
मैं निश्चित इस सवाल का जवाब (संकलक नाम और संस्करण है कि आप प्रयोग कर रहे हैं और मंच जानने की आवश्यकता होगी करने के लिए लगता है सीपीयू प्रकार, ओएस इत्यादि) कि यह संकलन कर रहा है।
मामले में आप, जैसा कि मैंने था unsigned long long
मुद्रित करने के लिए देख रहे हैं उपयोग:
unsigned long long n;
printf("%llu", n);
अन्य सभी संयोजनों के लिए, मैं आप the printf manual से तालिका का उपयोग, पंक्ति जो कुछ प्रकार के लिए है, तो स्तंभ लेबल लेने का मानना है आप प्रिंट करने की कोशिश कर रहे हैं (जैसा कि मैं ऊपर printf("%llu", n)
के साथ करता हूं)।
अधिकांश प्लेटफ़ॉर्म पर, long
और int
समान आकार (32 बिट्स) हैं। फिर भी, यह अपने आप ही फॉर्मेट स्पेसिफायर है:
long n;
unsigned long un;
printf("%ld", n); // signed
printf("%lu", un); // unsigned
64 बिट के लिए, आप चाहते हैं एक long long
:
long long n;
unsigned long long un;
printf("%lld", n); // signed
printf("%llu", un); // unsigned
ओह, और निश्चित रूप से, यह अलग Windows में बताया गया है:
printf("%l64d", n); // signed
printf("%l64u", un); // unsigned
अक्सर, जब मैं 64-बिट मानों को प्रिंट कर रहा हूं, तो मुझे हेक्स में मुद्रित करने में मदद मिलती है (आमतौर पर बड़ी संख्या में, वे पॉइंटर्स या बिट फ़ील्ड होते हैं)।
unsigned long long n;
printf("0x%016llX", n); // "0x" followed by "0-padded", "16 char wide", "long long", "HEX with 0-9A-F"
प्रिंट होगा:
0x00000000DEADBEEF
Btw, "लंबे" मतलब यह नहीं है कि ज्यादा अब और (मुख्य धारा 64 पर)। "int" प्लेटफ़ॉर्म डिफ़ॉल्ट int आकार है, आमतौर पर 32 बिट्स। "लंबा" आमतौर पर एक ही आकार होता है। हालांकि, उनके पास पुराने प्लेटफार्मों (और आधुनिक एम्बेडेड प्लेटफॉर्म!) पर अलग पोर्टेबिलिटी सेमेन्टिक्स हैं। "लंबे समय तक" एक 64-बिट संख्या है और आम तौर पर लोगों का उपयोग करने के लिए क्या मतलब है जब तक वे वास्तव में वास्तव में नहीं जानते थे कि वे एक्स-प्लेटफार्म पोर्टेबल कोड का एक टुकड़ा संपादित कर रहे थे। फिर भी, वे शायद इस प्रकार के अर्थपूर्ण अर्थ (उदाहरण के लिए uint64_t) पर कब्जा करने के लिए मैक्रो का इस्तेमाल करते थे।
char c; // 8 bits
short s; // 16 bits
int i; // 32 bits (on modern platforms)
long l; // 32 bits
long long ll; // 64 bits
दिन में वापस, "int" 16 बिट था। आपको लगता है कि यह अब 64 बिट्स होगा, लेकिन नहीं, इससे पागल पोर्टेबिलिटी के मुद्दे सामने आएंगे। बेशक, यहां तक कि यह आर्केन और इतिहास समृद्ध सत्य का एक सरलीकरण है।wiki:Integer
@ एमएम मैंने भ्रम से बचने के लिए मेरे उत्तर को स्पष्ट किया। –
बस स्पष्ट करने के लिए: x86 और x64 की तुलना में अधिक आर्किटेक्चर हैं, और उन आर्किटेक्चर, चार, लघु, int, लंबे और लंबे समय तक अलग-अलग अर्थ हैं। उदाहरण के लिए, 16 बिट मेमोरी संरेखण के साथ 32 बिट एमसीयू का उपयोग कर सकते हैं: char = short = int = 16 बिट; लंबा = 32 बिट्स; लंबे समय तक = 64 बिट – AndresR
@AndresR - बिल्कुल, और यह उन लोगों के लिए बहुत गहराई से मायने रखता है जो एम्बेडेड प्रोग्रामिंग करते हैं (मैंने एक बार धूम्रपान अलार्म के लिए कर्नेल मॉड्यूल बनाया)। उन गरीब आत्माओं पर दया करें जब वे पोर्टेबिलिटी के लिए लिखे गए कोड का उपयोग करने का प्रयास न करें। –
यह निर्भर करता है कि यदि आप हस्ताक्षर किए गए लंबे समय तक संदर्भित कर रहे हैं तो स्वरूपण वर्ण "%lu"
है। यदि आप हस्ताक्षर किए जाने वाले लंबे प्रारूप का जिक्र कर रहे हैं तो "%ld"
है।
- 1. क्या जीसीसी लंबे समय तक int का समर्थन करता है?
- 2. क्या लंबे और लंबे समय तक पूर्णांक
- 3. इतने लंबे समय तक HttpWebRequest GetResponse ब्लॉक क्यों करता है?
- 4. लंबे समय तक
- 5. ब्राउज़र लंबे समय तक प्रसंस्करण रद्द करता है जब ब्राउज़र
- 6. पाइथन int और लंबे समय तक कैसे प्रबंधित करता है?
- 7. लिखें या प्रिंटफ, जो तेज़ है?
- 8. लंबे समय तक XMLGregorian कैलेंडर और लंबे समय तक
- 9. SQLite लंबे प्रारूपों के लिए लंबे समय तक?
- 10. लंबे समय तक लाइनों()
- 11. क्या सी # फिलस्ट्रीम लंबे समय तक खुला रहता है?
- 12. एचटीपी क्लाइंट समय के लिए लंबे समय तक स्टाल करता है, यहां तक कि टाइमआउट पैरामीटर सेट
- 13. जावा लंबे समय तक बाइनरी
- 14. क्या लंबे समय तक परिभाषित किया गया है?
- 15. जावा: लंबे समय तक टिमस्टैम्प
- 16. लंबे समय तक आइटम हटाएं
- 17. बिटवाई "और" लंबे समय तक?
- 18. लंबे समय तक कास्ट करें
- 19. डब्ल्यूसीएफ - क्या यह लंबे समय तक एक चैनल खोलने के लिए बुरा व्यवहार है?
- 20. डेटाबेस कनेक्शन के दौरान एक स्प्लैश स्क्रीन दिखाएं (जो लंबे समय तक लग सकता है)
- 21. INT_MIN के मान को लंबे समय तक
- 22. क्या कोई स्थिरता है जो लंबे या पूर्णांक के अधिकतम मान को परिभाषित करता है?
- 23. लंबे समय तक एक जोड़ी के लिए हैश फ़ंक्शन?
- 24. यदि कक्षा लंबे समय तक चलती है तो कक्षाएं
- 25. लंबे समय तक अपवाद सूची के लिए जावा शैली
- 26. एंड्रॉइड मीडियाप्लेयर बहुत लंबे समय तक तैयारी कर रहा है
- 27. टेक्स्टव्यू लंबे समय तक पाठ को काटता है
- 28. स्ट्रिंग को लंबे समय तक परिवर्तित करने के लिए
- 29. सी ++ लंबे समय से बहती है
- 30. MySQL अपडेट (भी) लंबे समय तक लेना
'printf ("% ld ", ULONG_MAX)' मान को -1 के रूप में आउटपुट करता है। @Blorgbeard द्वारा वर्णित अनुसार हस्ताक्षर किए गए लंबे समय तक 'printf ("% lu ", ULONG_MAX) होना चाहिए। – jammus
मेरे उत्तर को सही होने के लिए बदल दिया, क्योंकि यह स्वीकार्य उत्तर है। मैं लोगों को भटकना नहीं चाहता हूं। – postfuturist
असल में, आपको ओपी प्रश्न के साथ अधिक हार्मोनिक होने के लिए इसे '% ld' के रूप में बदलना चाहिए। –