2009-01-20 17 views
35

मैं के रूप में एक 64 बिट काउंटर के लिए एक चर घोषित:स्वरूप निर्दिष्टकर्ता 'लंबे'

long long call_count; 

क्या है फॉर्मेट स्पेसिफायर कि मैं प्रिंट बयान में इस्तेमाल करना चाहिए?

मैंने कोशिश की, %l, %ld, %ll। कोई भी सही नहीं लगता है।

मैं पीएसओएस ऑपरेटिंग सिस्टम पर चलाने के लिए अपने एप्लिकेशन कोड को संकलित करने के लिए डायब सी कंपाइलर का उपयोग करता हूं।

उत्तर

52

सी 99 के अनुसार, यह "% lld" होना चाहिए (उदाहरण के लिए, here)। यदि डायब सी सी 99 नहीं है, तो आपको कंपाइलर दस्तावेज़ों को देखना होगा, जो मुझे त्वरित गुगलिंग के साथ ऑनलाइन नहीं मिल रहा है।

+0

यह 'लंबे समय तक हस्ताक्षरित int' के लिए भी काम करता है। – mayhewsw

+6

'लंबे समय तक हस्ताक्षरित int' के लिए आपको "% llu" का उपयोग करना चाहिए –

2

शायद% lld है? मुझे लगता है कि यह जीसीसी के लिए प्रारूप है, डायब सी कंपाइलर के बारे में कुछ भी नहीं पता।

+3

% lld स्टैंडर्ड रूपांतरण विनिर्देशक के लिए लंबे, (लेकिन वे मानकों का एक बहुत का समर्थन नहीं करते) है विंडोज केवल एक ही मैं उस के बारे में पता इस का समर्थन नहीं करता हूँ। इसके अलावा, यह मानक सी पुस्तकालय के लिए विशिष्ट है, संकलक नहीं। –

9

माइक्रोसॉफ्ट और Watcom %I64d (राजधानी आंख) का उपयोग, दूसरों का उपयोग %lld (लोअरकेस ell ell)।

+0

"% I64d (पूंजी I) का उपयोग करें": पुनः प्रयास करें? –

+5

माइक्रोसॉफ्ट लंबे समय तक ll (ell ell) का उपयोग करता है; __int64 के लिए I64 (आंख)। http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx –

+0

स्पष्ट। धन्यवाद –

4

यह एक और यहां तक ​​कि छोटे से अधिक यहाँ वर्णित किया गया है के लिए हस्ताक्षर किए हैं और% LLU के लिए% lld है: cross-platform printing of 64-bit integers with printf

टी एल; डॉ: आप PRId64 मैक्रो (inttypes से उपयोग कर सकते हैं। एच) अर्द्ध पोर्टेबल तरीके से दशमलव में 64 बिट पूर्णांक प्रिंट करने के लिए। अन्य मैक्रोज़ भी हैं (जैसे PRIx64)।

0
long long t1;    //signed 
unsigned long long t2; //unsigned 

printf("%lld",t1); 
printf("%llu",t2); 
संबंधित मुद्दे