2013-02-22 10 views
6

यह पहली बार में एक मूर्खतापूर्ण/तुच्छ सवाल प्रतीत हो सकता है, लेकिन जब मैं ऐसा करते हैं:15 और 015 के बीच क्या अंतर है?

char f_gear = 15; 

मैं सामान्य उत्पादन

"☼" 

मिल लेकिन जब मैं शून्य से यह पैड जब मैं इसे घोषित करें:

char f_gear = 015; 

मुझे अजीब आउटपुट मिलता है पाठ को खराब दिखता है (एक पंक्ति में) और पिछली रेखा को खाली करता है। जब मैं व्यक्तिगत चरित्र को स्वयं देखने का प्रयास करता हूं, तो मुझे निम्न मिलता है:

"  ◘◘@╧S☻ " 

अनिवार्य रूप से अलग क्या है? 15 == 015 नहीं है?

== EDIT == स्टैक ओवरफ़्लो ने प्रश्न पोस्ट करते समय पाठ को बदल दिया। मैंने जो आउटपुट देखा वह कुछ रिक्त पात्र थे।

+0

मुझे डुप्लिकेट होने पर क्षमा करें, मुझे कभी पता नहीं था कि 0 से शुरुआती संख्याएं अंडाकार थीं। –

+0

कोई समस्या नहीं है। आपको यह दिलचस्प भी मिल सकता है: http://stackoverflow.com/questions/6895522/is-0-a-decimal-literal-or-an-octal-literal – jogojapan

+0

http://stackoverflow.com/questions/44569/ octal-number-literals-कब-कभी-कभी –

उत्तर

11

नहीं, 015 ऑक्टल संख्या को संदर्भित करता है। तो, 015 में ऑक्टल दशमलव में 13 के बराबर है।

तो,

char f_gear = 015; 

को

7

015 अष्टाधारी अंकन है बराबर है। आप इसके बारे में यहां पढ़ सकते हैं: http://en.wikipedia.org/wiki/Octal। इसका ज्यादा उपयोग नहीं किया जाता है।

3

0 से शुरू होने वाले सभी संख्या अक्षर आठ octal में हैं।

1

उदाहरण, यदि हम संख्या "15" लिखते हैं। संकलक इस बात को पहचानेंगे कि: 0000 1111 बाइनरी में।

यदि हम संख्या 015 लिखते हैं तो संकलक ऑक्टल के रूप में पहचाना जाएगा और इसे बाइनरी में 0000 1101 के रूप में देखेगा।

1

char f_gear = 015 को ऑक्टल माना जाता है, और इसलिए यह char f_gear = 13 के बराबर है। ASCII 13 कैरिज रिटर्न के लिए है, जो परिणाम का कारण है। नीचे स्निपेट मूल्य दिखाता है enter image description here

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