2009-08-31 14 views
11

sizeof (3.0) और sizeof (3.0f) के बीच का अंतरsizeof नाव (3.0) बनाम (3.0f)

मैं उन दोनों को उम्मीद कर रहा था एक ही परिणाम देने के लिए (sizeof तैरने लगते हैं) क्या है .. लेकिन ये अलग है।

32 बिट मशीन में, जीसीसी संकलक, sizeof (3.0f) => 4 sizeof (3.0) => 8

क्यों इतने?

उत्तर

24

क्योंकि 3.0 एक डबल है। C syntax Floating point types देखें।

फ़्लोटिंग-पॉइंट स्थिरांक दशमलव नोटेशन में लिखा जा सकता है, उदा। 1.23। ई-ई जोड़कर दशमलव एक्सपोनेंट के बाद वैज्ञानिक नोटेशन का उपयोग किया जा सकता है, उदा। 1.23e2 (जिसमें मान 123 है)। या तो एक दशमलव बिंदु या एक एक्सपोनेंट आवश्यक है (अन्यथा, संख्या एक पूर्णांक स्थिर है)। सी 99 ने हेक्साडेसिमल फ़्लोटिंग-पॉइंट स्थिरांक पेश किया, जो समान नियमों का पालन करते हैं, सिवाय इसके कि वे 0x द्वारा पूर्ववर्ती होना चाहिए और हेक्साडेसिमल एक्सपोनेंट निर्दिष्ट करने के लिए पी का उपयोग करें। दोनों दशमलव और हेक्साडेसिमल फ्लोटिंग प्वाइंट स्थिरांक च या एफ द्वारा प्रत्यय किया जा सकता है को प्रकार नाव के एक निरंतर इंगित करने के लिए, एल या एल द्वारा संकेत मिलता प्रकार लंबे डबल, या छोड़ दिया एक डबल निरंतर के लिए unsuffixed।

+0

और 3.0f में है एक नाव है। – stonemetal

+0

दशमलव और हेक्साडेसिमल फ्लोटिंग-पॉइंट स्थिरांक दोनों को एफ या एफ द्वारा स्थिर किया जा सकता है ताकि एल या एल द्वारा प्रकार की फ्लोट को निरंतर इंगित किया जा सके, ताकि लंबे समय तक डबल इंगित किया जा सके, या डबल स्थिर के लिए छोड़ा गया हो। => यहां जवाब पाने के लिए यह बहुत तेज़ है :) – kumar

6

3,0 एक double, नहीं एक float है।

doublesfloat एस के रूप में दो गुना चौड़ा है।

संपादित: 3.0d केवल सी #

+0

कोई 'डी' फ्लोटिंग पॉइंट प्रत्यय नहीं है ('एल' और 'एल' लंबे डबल, 'एफ' और 'एफ' को फ्लोट और प्रत्यय की अनुपस्थिति देते हैं एक डबल देता है) – AProgrammer

+0

फिक्स्ड; धन्यवाद। – SLaks

+0

आईईईई 754 'डबल' में 'फ्लोट' के रूप में चौड़ा है; हालांकि आईईईई 754 की आवश्यकता नहीं है। –