সি ++ এ, আমি ভাবছি যে কেন বুল টাইপ 8 বিট দীর্ঘ (আমার সিস্টেমে), যেখানে বুলিয়ান মান ধরে রাখতে কেবল একটি বিটই যথেষ্ট?
আমি বিশ্বাস করতাম এটি পারফরম্যান্স কারণে ছিল, তবে তারপরে 32 বিট বা 64 বিট মেশিনে, যেখানে রেজিস্টারগুলি 32 বা 64 বিট প্রশস্ত হয়, পারফরম্যান্সের সুবিধা কী?
নাকি এই 'historicalতিহাসিক' কারণগুলির মধ্যে একটি?
sizeof(bool)
4 হবে I আমি শপথ করতে পারি যে এমএসভিসি-তে 32-বিট বাল রয়েছে, তবে আমি কেবল চেষ্টা করেছি এবং এটি হয় না।
vector<bool>
হ'ল এটি চালাক হওয়ার চেষ্টা করে এবং বুলে বিটগুলিকে প্যাক করার চেষ্টা করে না, তবে এটি এটি করার চেষ্টা করে এবং নিজেকে একটি এসটিএল ধারক হিসাবে ছদ্মবেশ ধারণ করে । এটি একটি এসটিএল ধারক হওয়ার ভান না করে প্লেইন বিটসেটটি বেশ ভাল ছিল fine
bool
উইন্ডোজ BOOL
টাইপের সাথে সি ++ ডাটা টাইপটি বিভ্রান্ত করছেন যা টাইপডেফড রয়েছে long
। সুতরাং sizeof(bool) != sizeof(BOOL)
, যা আমি নিশ্চিত যে প্রচুর বিভ্রান্তি সৃষ্টি করে (এবং সম্ভবত যথেষ্ট সংখ্যক বাগ)। বিশেষত যেহেতু উইন্ডোজে এছাড়াও আছে boolean
এবং BOOLEAN
টাইপিডেফগুলি, যা এর জন্য এলিয়াস unsigned char
। এছাড়াও, নোট করুন যে এটি bool
1 বাইট হিসাবে সাধারণ হওয়ার সময় , সি ++ স্ট্যান্ডার্ডের একটি নোট রয়েছে যা এটি নির্দিষ্ট করে এটি আরও sizeof(bool)
বড় হতে পারে indicates