0 দশমিক আক্ষরিক বা অষ্টাল আক্ষরিক?


329

জিরো সর্বদা শূন্য থাকে, তাই এটি কোনও ব্যাপার না। তবে এক বন্ধুর সাথে সাম্প্রতিক আলোচনায় তিনি বলেছিলেন যে আজ অটল লিটারাল প্রায় অব্যবহৃত। তারপর এটি আমার উপর dawned যে আসলে প্রায় সব আমার কোডে পূর্ণসংখ্যা লিটারেল হয় অকট্যাল, যথা 0

0সি ++ ব্যাকরণ অনুসারে কি অক্টাল আক্ষরিক হয়? মান কী বলে?

শুধুমাত্র বাস্তব ব্যবহারের আমি সচেতন আছি UNIX ফাইল অনুমতি জন্য।


6
এটি কি জাভার জন্য একই?
ফিলিপ

80
সম্পূর্ণ অপ্রাসঙ্গিক প্রশ্ন জিজ্ঞাসা করার জন্য এবং প্রচুর পরিমাণে উপার্জন পাওয়ার জন্য +1 :-)
কেরেরেক এসবি

64
আমি মনে করি এসও-তে তাত্ক্ষণিকভাবে বক্তব্য দেওয়ার উপায়টি কোনও গভীর প্রশ্ন নয়, তবে একটি উদ্ভট প্রশ্ন যার উত্তরটি আপনি জলকুলার দিকে জিতবেন :) :)
জোশ

4
ভয়াবহ প্রশ্ন :) আমি এটি জাভা ল্যাঙ্গুয়েজ স্পেসে দেখলাম , এবং জাভাতে এটি দশমিক। চশমা এমনকি নীচের উদ্ধৃতি রয়েছে: নোট করুন যে অষ্টাল সংখ্যা সর্বদা দুটি বা আরও বেশি সংখ্যার সমন্বয়ে গঠিত; 0 কে সর্বদা দশমিক সংখ্যা হিসাবে বিবেচনা করা হয় - 0, 00 এবং 0x0 সংখ্যার জন্য এটি অনুশীলনের ক্ষেত্রে খুব বেশি গুরুত্ব দেয় না all সমস্ত একই সংখ্যার মানের প্রতিনিধিত্ব করে।
টোবিয়াস রিট্টো

14
আমি প্রায় একটি উত্তর পোস্ট করতে প্রলুব্ধ হয়েছি যা বলে যে "হ্যাঁ, 0 একটি দশমিক আক্ষরিক বা একটি অক্টাল আক্ষরিক"।
কিথ থম্পসন

উত্তর:


296

হ্যাঁ, 0 সি ++ এর একটি অক্টাল আক্ষরিক

সি ++ স্ট্যান্ডার্ড অনুসারে:

২.১৪.২ পূর্ণসংখ্যা অক্ষর [লেক্স.আইকন]

integer-literal:  
    decimal-literal integer-suffixopt  
    octal-literal integer-suffixopt  
    hexadecimal-literal integer-suffixopt  
decimal-literal:  
    nonzero-digit  
    decimal-literal digit  
octal-literal:  
    0                           <--------------------<Here>
    octal-literal octal-digit

39
অন্যান্য গুরুত্বপূর্ণ বিষয় হ'ল দশমিক-আক্ষরিক হ'ল একটি ননজারো-অঙ্ক যার পরে শূন্য বা তার বেশি সংখ্যার কোনও দ্বিধা নেই।
সিবি বেইলি

3
@ এসএমএলটারগুলি: আপনার সংস্করণ সহ, আপনি অতিরিক্তটিকে অগ্রাধিকার নির্দিষ্ট করতে হবে: যদি উভয়ই হয় octal-literal এবং decimal-literalবাইট প্যাটার্নটির সম্ভাব্য ব্যাখ্যা থাকে তবে চয়ন করুন octal-literal। অফিসিয়াল স্ট্যান্ডার্ড এর শব্দগুচ্ছটিতে এই সমস্যা নেই।
মার্টিন সোজকা

23
@ এসএমএলটারস: আপনি এখনও কোনও সংখ্যার হিসাবে দশমিক-আক্ষরিক থাকতে পারতেন না , এটি একটি একক শূন্য বা কোনও শূন্য - বিন্দু হতে হবে এবং তার পরে কোনও অঙ্ক থাকবে নাহলে প্রতিটি অষ্টাল আক্ষরিক দশমিক আক্ষরিক হিসাবে ব্যাখ্যা করা যেতে পারে। আমি কম্পাইল এরর দেখতে পারেন, এখন: ERROR: 0 is ambiguous, could be octal zero or could be decimal zero. Consider using (1 - 1) to disambiguate
সিবি বেইলি

3
@ এসএমএলটারস আপনার উদাহরণ হিসাবে, 0123 অষ্টাল-আক্ষরিক এবং দশমিক-আক্ষরিক উভয়ই মিলবে, তবে উভয় দিক দিয়েই এর অর্থ আলাদা।
ফুলফি

5
@ চারেলস বেইলি - এফটিএফওয়াই, 1এখনও অষ্টাল এবং সমস্ত হিসাবে রয়েছে; পি -ERROR: 0 is ambiguous, could be octal zero or could be decimal zero. Consider using (8 - 8) to disambiguate
টিওয়ালবার্গ

44

যে কোনও পূর্ণসংখ্যার মানের সাথে উপসর্গ করা 0হয় এটি একটি অক্টাল মান। উদাহরণস্বরূপ: 01 হ'ল অষ্টাল 1, 010 অষ্টাল 10, যা দশমিক 8, এবং 0টি অক্টাল 0 (যা দশমিক এবং অন্য কোনও 0)।

হ্যাঁ, '0' একটি অষ্টাল।

এটি @ আলসের উত্তরে ব্যাকরণের স্নিপেটের সরল ইংরেজী অনুবাদ :-)


একটি পূর্ণসংখ্যা সঙ্গে পূর্বে সমাধান 0xকরা হয় না সঙ্গে পূর্বে সমাধান 00xএকটি স্পষ্টতই পৃথক উপসর্গ। স্পষ্টতই এমন লোক আছে যারা এই পার্থক্য করতে পারে না।

একই মান অনুসারে, যদি আমরা চালিয়ে যাই:

 integer-literal:
     decimal-literal integer-suffixopt
     octal-literal integer-suffixopt
     hexadecimal-literal integer-suffixopt
 decimal-literal:
     nonzero-digit                       <<<---- That's the case of no prefix.
     decimal-literal digit-separatoropt digit
 octal-literal:
     0                                    <<<---- '0' prefix defined here.
     octal-literal digit-separatoropt octal-digit <<<---- No 'x' or 'X' is
                                                          allowed here.
 hexadecimal-literal:
     0x hexadecimal-digit                 <<<---- '0x' prefix defined here
     0X hexadecimal-digit                 <<<---- And here.
     hexadecimal-literal digit-separatoropt hexadecimal-digit

5
"'0' দিয়ে শুরু হওয়া কোনও পূর্ণসংখ্যার মান একটি অষ্টাল মান" " সত্য না. উদাহরণ: 0xA '0' দিয়ে শুরু হয় এবং এটি একটি পূর্ণসংখ্যা মান।
নিকোলাই রুহে

4
0xটোকেন নয়। একটি পূর্ণসংখ্যার আক্ষরিক সাথে শুরু হওয়া 0xএকক টোকেন।
কিথ থম্পসন

4
আপনি এই সংজ্ঞাটির জন্য কোন উত্স উদ্ধৃত করছেন? "টোকেন" শব্দটি সি (এন 1570 6.4) এবং সি ++ (সি ++ 11 2.7 [লেক্স. টোকেন]) স্ট্যান্ডার্ড দ্বারা সিনথেটিকভাবে সংজ্ঞায়িত হয়েছে । 0xযোগ্যতা অর্জন করে না। (কমপক্ষে সি তে, এটি একটি প্রিপ্রোসেসিং নম্বর (এন 1570 6.4.8) যদি এটি কোনও হেক্সাডেসিমাল ধ্রুবকের অংশ না হয় তবে এটি একটি টোকেন নয়))
কীথ থম্পসন

11
আমরা সি এবং সি ++ স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত হিসাবে পূর্ণসংখ্যার ধ্রুবক / আক্ষরিক সিনট্যাক্স নিয়ে আলোচনা করছি । "টোকেন" এর মানদণ্ডের সংজ্ঞাটি এই প্রসঙ্গে ব্যবহার করা সবচেয়ে উপযুক্ত নয় কীভাবে? আপনার অপমানজনক সংক্ষেপটি অনুপযুক্ত। এবং যদি আপনি মনে করেন যে আমি আপনার উত্তরের কোনও প্রযুক্তিগত ত্রুটি বলে মনে করি এমন কোনও বিষয় নির্দেশ করার জন্য আমি বোকা, তবে আমি আপনাকে সেই শব্দের অর্থটি পুনর্বিবেচনা করার পরামর্শ দিই। (আপনি কখনই আপনার সংজ্ঞার উত্স সম্পর্কে আমার প্রশ্নের উত্তর দেননি))
কিথ থম্পসন

4
কারও কৌতূহল থাকলে, " এ টোকেনটি এক বা একাধিক অক্ষরের একটি স্ট্রিং যা একটি গোষ্ঠী হিসাবে তাৎপর্যপূর্ণ is " বিবৃতি এই উইকিপিডিয়া নিবন্ধ থেকে প্রতীয়মান হয়
কিথ থম্পসন

-2

স্পষ্টতই শূন্য দিয়ে শুরু হওয়া সমস্ত পূর্ণসংখ্যার অক্ষর আসলে অষ্টাল। এর অর্থ এটি এর মধ্যে 0 টিও অন্তর্ভুক্ত রয়েছে। শূন্য শূন্য হওয়ায় এটি সামান্য পার্থক্য করে। তবে এই ঘটনাটি না জানলে আপনার ক্ষতি হতে পারে।

আমি যখন বাইনারি সংখ্যাগুলি দশমিক এবং হেক্সিডেসিমাল আউটপুটে রূপান্তর করার জন্য একটি প্রোগ্রাম লেখার চেষ্টা করছিলাম তখন আমি এটি উপলব্ধি করেছি। আমি যখনই শূন্য দিয়ে একটি নম্বর দিয়েছিলাম তখনই আমি ভুল আউটপুট পাচ্ছি (উদাহরণস্বরূপ, 012 = 10, 12 নয়)।

এই তথ্যটি জানা ভাল তাই আপনি একই ভুলটি করবেন না।


7
পূর্ণসংখ্যার অক্ষর শূন্যের সাথে শুরু হয় তবে শূন্যের পরে 'x' ছাড়াই।
লিউসকিবল

5
প্রমাণ ছাড়াই "হ্যাঁ" জোর দেওয়া কোনও উত্তর নয়।
অরবিটে হালকা ঘোড়দৌড়

1
এই যুক্তি অনুসারে, 09 একটি অষ্টাল সংখ্যা।
0xc0de

3
@ 0xc0de: না, 09এটি একটি অষ্টাল সংখ্যা নয়, কারণ এটি কোনও সংখ্যা নয়; এটি কোনও ধরণের পূর্ণসংখ্যার আক্ষরিক জন্য সিনট্যাক্সের সাথে মেলে না।
কিথ থমসন

7
আমি বেশ আত্মবিশ্বাসী যে @ 0xc0de জানে যে 09এটি একটি অষ্টাল সংখ্যা নয়। কি বলা হয়েছিল, " এই যুক্তি দ্বারা , 09একটি অকট্যাল সংখ্যাকে হয়।" সংশ্লেষ যে, যেহেতু, 09হয় না , একটি অকট্যাল সংখ্যাকে যুক্তিবিজ্ঞান ভুল হতে হবে।
ট্রিগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.