2014-06-18 11 views
5

मैं अब प्रोग्रामिंग भाषाओं (बीएनएफ, स्कैनर इत्यादि) के बारे में सीख रहा हूं और ऐसा लगता है कि सी में हेक्साडेसिमल फ्लोटिंग पॉइंट स्थिरांक को एक्सपोनेंट की आवश्यकता होती है।हेक्साडेसिमल फ़्लोटिंग पॉइंट का निर्दिष्ट एक्सपोनेंट क्यों होना चाहिए?

C99 मानक से,

§6.4.4.2 फ्लोटिंग स्थिरांक

hexadecimal-floating-constant: 
    hexadecimal-prefix hexadecimal-fractional-constant 
     binary-exponent-part floating-suffix[opt] 
    hexadecimal-prefix hexadecimal-digit-sequence 
     binary-exponent-part floating-suffix[opt] 

यह एक स्कैनर है कि एक वैकल्पिक प्रतिपादक के साथ हेक्साडेसिमल चल बिन्दु स्थिरांक पार्स होगा लिखना आसान लगता है। सी मानक दशमलव फ़्लोटिंग पॉइंट्स के लिए एक्सपोनेंट वैकल्पिक क्यों बनाता है और हेक्स फ़्लोटिंग पॉइंट्स के लिए आवश्यक है?

उत्तर

7

यह C99 Rationale में कवर किया जाता है, खंड 6.4.4.2:

C99 की एक नई सुविधा: C99 क्योंकि यह अधिक स्पष्ट रूप से चल स्थिरांक के महत्व को व्यक्त करता है हेक्साडेसिमल नोटेशन कहते हैं। बाइनरी-प्रतिपादक भाग के लिए आवश्यक है, वैकल्पिक के बजाय के रूप में यह दशमलव संकेतन के लिए है, एक f प्रत्यय हेक्साडेसिमल अंकों के रूप में गलत किया जा रहा से उत्पन्न अस्पष्टता से बचने के।

उदाहरण के लिए, 1.0f एक दशमलव फ्लोटिंग प्वाइंट प्रकार float की लगातार है, लेकिन 0x1.0f अस्पष्ट होगा, और 0x1.0p0f के रूप में लिखा जाना चाहिए।

इसी कारण से, e के बजाय एक्सपोनेंट p द्वारा पेश किया गया है क्योंकि e एक वैध हेक्साडेसिमल अंक है।

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