2009-09-05 16 views
11

के बीच अंतर सी ++ में 0 और 0.0 के बीच कोई अंतर है? डबल की शुरुआत के लिए आपको किस का उपयोग करना चाहिए?सी ++ 0 और 0.0

धन्यवाद

उत्तर

14

एक शाब्दिक 0 माना जाता है एक int शाब्दिक; शाब्दिक 0.0 एक double शाब्दिक है। double को असाइन करते समय, या तो काम करेगा (चूंकि int को विस्तृत रूपांतरण में डाला जा सकता है); हालांकि, 0.0 को int पर कास्टिंग एक संकुचित रूपांतरण है, और इसे स्पष्ट रूप से किया जाना चाहिए; यानी (int)0.0

+2

और 0.0f एक फ्लोट मान है। : डी –

+2

@ रोब, क्या आप कह रहे हैं कि एक डबल को अंतर्निहित रूप से एक int में परिवर्तित नहीं किया जा सकता है? 'Int a = 0.0;' पर विचार करें। –

+1

एक डबल को निश्चित रूप से एक स्पष्ट कलाकार के बिना एक int को सौंपा जा सकता है। उत्तर के इस हिस्से को संशोधित करने की जरूरत है। –

5

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

मैं आपके इरादे (अन्य प्रोग्रामर) को स्पष्ट रूप से स्पष्ट करने के लिए 0.0 का सुझाव देना चाहता हूं।

7

मैं अपने स्थिरांक प्रकार-संगत रखने की कोशिश करता हूं। इंक के लिए 0। फ्लोट के लिए 0.0 एफ या 0. एफ, और डबल के लिए 0.0।

मेरे लिए, ऐसा करने का सबसे महत्वपूर्ण कारण यह है कि संकलक और प्रोग्रामर एक ही चीज़ देखते हैं।

मैं ऐसा करते हैं तो ...

float t=0.5f; 
float r; 

r= 1 * t; 

... आर 0 या .5 सौंपा जाना चाहिए? अगर मैं इसके बजाय ऐसा करता हूं तो कोई हिचकिचाहट नहीं है ...

float t=0.5f; 
float r; 

r= 1.0f * t; 
+0

0.f एक हेक्साडेसिमल फ्लोटिंग-पॉइंट मान की तरह लगता है :) –

+1

हाँ, सी परेशानी में है अगर यह कभी भी फ्लोट प्वाइंट हेक्स साहित्य का समर्थन करना चाहता है, है ना। :-) – Nosredna

+0

क्या आप कृपया विस्तृत कर सकते हैं? कभी भी 0 को क्यों सौंपा जाएगा? – pingu

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