2010-03-10 5 views
5

मैं विश्वविद्यालय में अपने गणित पाठ्यक्रम के लिए सी प्रोग्रामिंग शामिल परियोजना पर काम कर रहा हूं। मुझे बड़े इंटीग्रर्स को संभालने में सक्षम होना चाहिए, जो 'लंबी int' डेटाटाइप में संग्रहीत किए जा सकने वालों से बड़े हैं। इसलिए मैं उपयोग करने की कोशिश 'लंबे int', लेकिन अगर मैं कुछ इस तरह का प्रयास करें:: 'पूर्णांक लगातार भी "लंबे" प्रकार के लिए बड़ी त्रुटि''लम्बी लम्बी int' को 'लम्बी int' के रूप में व्याख्या किया जाता है। मैं इसे कैसे प्राप्त करूं?

long long int number; 
number = 10000000000; 

तो त्रुटि संदेश कहते हैं।

मैंने अन्य मानक सी पुस्तकालयों सहित '___int64' और 'int_64t' जैसी अन्य डेटाटाइप की कोशिश की है और मुझे अभी भी एक ही समस्या है।

अजीब है, जब मैं 'printf("LLONG_MAX = %lld\n", LLONG_MAX);' कोशिश, मैं इस मिल:

LLONG_MAX = -1 

मैं codeblocks 8.02 उपयोग कर रहा हूँ Windows XP पर है, लेकिन मुझे यकीन है कि जीसीसी संकलक का कौन सा संस्करण स्थापित किया गया है के बाद से मैं उपयोग कर रहा हूँ नहीं कर रहा हूँ परिसर में नेटवर्क कंप्यूटर और मुझे मुख्य फाइल सिस्टम तक पहुंचने की अनुमति नहीं है। मैं अपने लैपटॉप को प्रतिदिन कैंपस में नहीं लेना चाहता हूं। कृपया सहायता कीजिए! धन्यवाद

उत्तर

1

इस वाक्य के साथ माइक्रोसॉफ्ट पर्यावरण उपयोग printf में:

 
    __int64 i64 = 10000000000; 
    unsigned __int64 u64 = 10000000000000000000; 

    printf ("%I64d\n", i64); 
    printf ("%I64u\n", u64); 
    printf ("%I64d\n", u64); <-- note this typo 

+0

धन्यवाद! यह अभी काम कर रहा है :) – Eddy

3

अपने पूर्णांक स्थिरांक के अंत में ll जोड़ें।

+0

मैंने कोशिश की है। काम नहीं करता संख्या = 10000000000ll printf ("संख्या =% एलएलडी, संख्या); मुझे 'संख्या = 1410065408' – Eddy

+0

देता है शायद आप निर्दिष्ट कर सकते हैं कि" ll "लोअरकेस" एलएल "है, मुझे यकीन नहीं था आपने जो लिखा और ग्यारह (11) [EDIT] यदि आप जानते हैं कि जीसीसी स्थापित है, तो आप संस्करण प्राप्त करने के लिए "gcc -v" टाइप कर सकते हैं। –

+0

हाँ भ्रम के बारे में खेद है। मुझे यकीन नहीं है जीसीसी के संस्करण को कैसे प्राप्त करें, मैं विंडोज एक्सपी का उपयोग नहीं कर रहा हूं लिनक्स को कमांड कमांड प्रॉम्प्ट में 'gcc' को मान्यता नहीं दी गई है। – Eddy

0

उम, कोड :: ब्लॉक जीसीसी को अपने सामान्य कंपाइलर के रूप में उपयोग करता है। और उस संस्करण के हाल के संस्करण 64 बिट प्रकार स्पष्ट रूप से समर्थन करते हैं।

तो तुम

#include <inttypes.h> 
uint64_t unsigned64BitNumber; 
int64_t signed64BitNumber; 
0

में सक्षम होना चाहिए आप एक जीसीसी संकलक के साथ लंबे पूर्णांक का उपयोग करने में सक्षम होना चाहिए, लेकिन मैं यह c99 एसटीडी कोड जहां के रूप में अपने डिफ़ॉल्ट C89 मोड हो सकता है का उपयोग कर की आवश्यकता हो सकती है। अपने कंपाइलर कमांडलाइन में --std = c99 जोड़ने का प्रयास करें और देखें कि इससे मदद मिलती है :-)

+0

पावंचचेखा की प्रतिक्रिया के अलावा Thats – PinkyNoBrain

+0

क्षमा करें मैं एक नया हूँ, मैं हूँ कमांडलाइन का उपयोग नहीं कर रहा हूं, मैं सिर्फ कोडब्लॉक्स में 'बिल्ड और रन' पर क्लिक कर रहा हूं। मैं यह कैसे कर सकता हूं? – Eddy

+0

कोई समस्या नहीं। टीएस थोड़ी देर के बाद से मैंने कोडब्लॉक का इस्तेमाल किया लेकिन मुझे लगता है कि "सेटिंग्स" पर जाकर "कंपाइलर और डीबगर" प्रासंगिक विंडो लाता है। वहां से आप "कंपाइलर सेटिंग्स/कंपाइलर फ्लैग टैब" चाहते हैं और सी प्रोग्राम के लिए सी 99 मोड या आईएसओ सी 9 0 का उपयोग करने के लिए विकल्प और विकल्प चाहते हैं। मुझे सटीक विकल्प नाम की जानकारी नहीं है। आधे रास्ते नीचे http://www.codeblocks.org/docs/main_codeblocks_en3.html descibes hthe संकलक विकल्प विंडो – PinkyNoBrain

0

शायद संकलक डेटाटाइप के int हिस्से से उलझन में है - क्या आपने इसके बजाय long long का उपयोग करने का प्रयास किया है?

This website आपकी मदद कर सकता है।

+0

मैंने कोशिश की है। मैंने इस वेबसाइट पर भी एक नज़र डाली, जिसने मुझे 'printf ("LLONG_MAX =% lld" LLONG_MAX) का प्रयास करने के लिए प्रेरित किया;'। यह मुझे LLONG_MAX = -1 देता है जो कि अजीब है :( – Eddy

11

जब संकलक आपकी सी फ़ाइल संकलित कर रहा है और एक पूर्णांक या फ़्लोटिंग पॉइंट स्थिरांक में आता है तो उसे इसे एक प्रकार असाइन करने की आवश्यकता होती है। यह निश्चित रूप से आपके लिए एक डिफ़ॉल्ट प्रकार का चयन करेगा। आप संकलक को पूर्णांक प्रत्यय प्रदान करके स्पष्ट रूप से प्रकार सेट कर सकते हैं। एक पूर्णांक प्रत्यय संकलक को बता सकता है कि यह लंबा, लंबा लंबा, या हस्ताक्षरित प्रकार है।

  • 10 परोक्ष एक हस्ताक्षरित पूर्णांक
  • 10u है, 10U स्पष्ट रूप से एक अहस्ताक्षरित पूर्णांक
  • 10L, 10L स्पष्ट रूप से एक पर हस्ताक्षर किए लंबे पूर्णांक
  • 10ll, 10LL या Win32 पर 10i64 स्पष्ट रूप से एक पर हस्ताक्षर किए लंबा है है लंबे पूर्णांक
  • 10ull स्पष्ट रूप से एक अहस्ताक्षरित लंबे

चल बिन्दु प्रकार भी इस स्थिति है। एक प्रकार या तो एक फ्लोट हो सकता है, एक डबल या एक लंबा डबल। एक फ़्लोटिंग पॉइंट प्रकार आमतौर पर डबल पर डिफ़ॉल्ट होता है।

  • 10,0 परोक्ष एक डबल
  • 10.0f है या 10.0F स्पष्ट रूप से एक नाव
  • 10.0l है या 10.0L स्पष्ट है एक लंबी डबल
0

प्रत्यय के बारे में पिछली टिप्पणी के अलावा और जीसीसी सी 99 मोड, यदि आप काम करने में लंबा समय नहीं ले सकते हैं, और आपको केवल 2^52 तक पूर्णांक की आवश्यकता है, तो आप डबल का उपयोग करके दूर हो सकते हैं। 2^52 तक पूर्णांक को आईईईई डबल सटीक प्रारूप (0 +1 पूर्वाग्रह एक्सपोनेंट) मानते हुए डबल के रूप में बिल्कुल प्रतिनिधित्व किया जाना चाहिए।

0

लोग पहले से ही तैनात रूप में, आप आप क्या संकलक का उपयोग कर रहे जांच होनी चाहिए। कोड में: ब्लाकों आप करते हैं (मेरे संस्करण में वैसे भी, उम्मीद है कि यह आप के लिए भी काम करेगा): परियोजना> बिल्ड विकल्पों का चयन करके

सबसे पहले क्या संकलक अपनी परियोजना के लिए चयन किया जाता है पता लगाने के ... और देखो क्या यह "चयनित कंपाइलर"

में फिर से चुनें: सेटिंग्स-> कंपाइलर और डीबगर ... और उस कंपाइलर का चयन करें जिसे आपने अभी पाया है। फिर "टूलचेन निष्पादन योग्य" पर क्लिक करें और देखें कि यह क्या कहता है उदा। "सी संकलक"।

शायद यदि आप सफल होते हैं, और अपने परिणाम पोस्ट करते हैं, तो यहां कोई आपकी मदद कर पाएगा।

संबंधित मुद्दे