সাইজফুল (বুল) কি সি ++ ভাষার মান হিসাবে সংজ্ঞায়িত করা হয়েছে?


115

আমি স্ট্যান্ডার্ড ডকুমেন্টেশনে কোনও উত্তর খুঁজে পাচ্ছি না। সি ++ ভাষার মানটি কি sizeof(bool)সর্বদা 1 (1 বাইটের জন্য) হওয়া প্রয়োজন, বা এই আকারের প্রয়োগ-সংজ্ঞা দেওয়া হয়েছে?

উত্তর:


167

sizeof(bool) বাস্তবায়ন সংজ্ঞায়িত করা হয়, এবং মান এই সত্যের উপর উল্লেখযোগ্য জোর দেয়।

§5.3.3 / 1, সংক্ষিপ্ত:

sizeof(char), sizeof(signed char)এবং sizeof(unsigned char)1; sizeofঅন্য যে কোনও মৌলিক ধরণের প্রয়োগের ফলাফলটি বাস্তবায়ন-সংজ্ঞায়িত। [দ্রষ্টব্য: বিশেষত, sizeof(bool)এবং sizeof(wchar_t)বাস্তবায়ন-সংজ্ঞায়িত হয়। 69) ]

পাদটীকা 69):

sizeof(bool) 1 হতে হবে না।


এমন কোনও পতাকা রয়েছে যেটির সাথে আমার প্রোগ্রামটি সংকলিত করতে হবে, যে আমার সংকলকটি কেবল 1 বাইট ব্যবহার করবে bool?
ঈগল

3
@ Agগল: এটি আপনার সংকলক পর্যন্ত, আমি নিশ্চিত নই। এটি সম্ভবত আপনি আপনার সংকলক পর্যন্ত রেখে গেছেন best
GManNickG

5
নোট করুন যে স্ট্যান্ড :: ভেক্টর <বুুল> স্ট্যান্ডার্ড অনুসারে 1 বিট বুলসযুক্ত একটি ভেক্টরকে অনুকূলিত করেছে।
ব্যবহারকারী 3063349

15

http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx

"ভিজ্যুয়াল সি ++ ৪.২-এ, স্ট্যান্ডার্ড সি ++ হেডার ফাইলগুলিতে একটি টাইপেইফ রয়েছে যা বুলকে ইন্টের সাথে সমান করে। সি ++ ৪.২, আকারের একটি কল (বুল) 4 দেয়, যখন ভিজ্যুয়াল সি ++ 5.0 এবং তার পরে একই কল আসে 1. ফাইলগুলি (ওবিজে) এবং / অথবা ডিএলএলগুলি 4.2 এবং 5.0 বা তার পরে সংকলকগুলি দিয়ে নির্মিত ""


2
আপনি বুঝতে পেরেছেন যে এটি কিছুটা প্রশ্নের সাথে সম্পর্কিত, তবে পরিষ্কারভাবে কোনও উত্তর নয়, যেহেতু 0xbadf00d স্ট্যান্ডার্ড সম্পর্কে জিজ্ঞাসা করেছে, কিছু নির্দিষ্ট / নির্বিচারে নির্বাচিত সংকলক বাস্তবায়ন নয়, তাই না?
ক্রিস্টোফার ক্রিউটজিগ

13
@ ক্রিসটফার ক্রিউটজিগ এটি কাউন্টারেক্সেক্স দ্বারা প্রমাণ।
কিনোকিজুফ 24'14

12
@ কিনোকিজুফ এটি কাউন্টারেক্সটিক নমুনা নয়। ভিজ্যুয়াল সি ++ তে অনেকগুলি জিনিস রয়েছে যা মানক-অনুগত নয়।
0xbadf00d

11

এটি বাস্তবায়ন সংজ্ঞায়িত। শুধু sizeof(char)হয় 1মান দ্বারা।


2
প্লিজ নোট করুন যে স্ট্যান্ডার্ডের 1 এর অর্থ 4 বাইট হতে পারে। প্রতিটি প্রকারের চেয়ে 4 টির একটি পণ্য 4 সুতরাং যত্নশীল যে কেবলমাত্র মানক চরটিকে 1 হিসাবে সংজ্ঞা দেয় তবে পরিমাপটি সংজ্ঞায়িত করে না।
ব্যবহারকারী 3063349

1 মানে 8 বিট বা 1 বাইট স্ট্যান্ডার্ড
পলম

11
1 বাইট। বাইট প্রতি বিটের সংখ্যা মান দ্বারা সংজ্ঞায়িত করা হয় না (এটি কমপক্ষে 8 আইআইআরসি হওয়া দরকার), তবে এটিতে CHAR_BITসংজ্ঞায়িত করা যায় climits
পেরো

3

5.3.3 অনুচ্ছেদ 1 দেখুন:

[দ্রষ্টব্য: বিশেষত, মাপের (bool) এবং মাপের (wchar_t) বাস্তবায়ন-সংজ্ঞায়িত হয় 9৯)]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.