050
क्यों निम्नलिखित स्निपेट में 50
के बराबर नहीं है?निम्नलिखित स्निपेट में 050 के बराबर 5050 क्यों नहीं है?
#include <stdio.h>
int main(void) {
int x=050,y=50;
int ans;
ans= x==y ? x+3 : y+7;
printf("%d\n",ans);
}
050
क्यों निम्नलिखित स्निपेट में 50
के बराबर नहीं है?निम्नलिखित स्निपेट में 050 के बराबर 5050 क्यों नहीं है?
#include <stdio.h>
int main(void) {
int x=050,y=50;
int ans;
ans= x==y ? x+3 : y+7;
printf("%d\n",ans);
}
क्योंकि 050
को ऑक्टल माना जाता है और 50
को दशमलव माना जाता है।
तो x = 050
मूल रूप से x = 40
का अर्थ है।
6.4.4.1/3
एक दशमलव लगातार एक अशून्य अंकों साथ शुरू होता है और दशमलव अंकों के एक अनुक्रम के होते हैं। एक ऑक्टल स्थिरांक में पूर्व फाई 0 वैकल्पिक रूप से केवल 0 से 7 अंकों के अनुक्रम के बाद होता है।
एक ही कारण है कि 0x50 एक ही रूप में 50 या 050
हाँ स्वीकार करने के लिए विनम्र होगा - यह ज्यादातर ऐतिहासिक है। सीईसी पीडीपी मशीनों पर सी विकसित किया गया था, और उनके पास 8 सामान्य रजिस्ट्रार थे, और 8 एड्रेसिंग मोड थे। उनके निर्देशों में उन्हें संदर्भित करने के लिए विभिन्न 3-बिट फ़ील्ड शामिल थे, इसलिए ऑक्टल बेहद स्वाभाविक था। और सी मूल रूप से डिजाइन और पीडीपी पर यूनिक्स को लागू करने के लिए उपयोग किया गया था। मैं ऑक्टल मोड के बारे में सोचता हूं कि एक छोटे देशी उच्चारण की तरह है कि सी और इसके डेरिवेटिव्स के पास है, जो उन्हें पहले लाया गया था। :-) – SusanW
क्योंकि 050
एक ऑक्टल स्थिरांक है।
050 को ऑक्टल के रूप में व्याख्या किया गया है, जिसमें 10 के बजाय संख्या आधार के रूप में 8 है।
आप शायद ऑक्टल का मतलब था। ऑक्टैडेसिमल आधार 18 होगा। –
मुझे यह मिला। सभी को धन्यवाद ... –
@KarlBielefeldt: धन्यवाद, आप सही हैं। –
050 ऑक्टल में 40 है। 0 संख्या को एक ऑक्टल शाब्दिक में बदल देता है।
सही जवाब –