C ++ 'da, bool türünün neden 8 bit uzunluğunda olduğunu (benim sistemimde) merak ediyorum, burada boole değerini tutmak için yalnızca bir bit yeterlidir?
Bunun performans nedenlerinden dolayı olduğuna inanırdım, ama sonra yazmaçların 32 veya 64 bit genişliğinde olduğu 32 bit veya 64 bitlik bir makinede, performans avantajı nedir?
Yoksa bu 'tarihsel' nedenlerden sadece biri mi?
sizeof(bool)
4 nerede olacak bir sistem istiyordum. Msvc'nin 32-bit bool'ları olduğuna yemin edebilirdim, ama sadece denedim ve olmadı.
vector<bool>
zekice davranmaya ve boolleri parçalara ayırmaya çalışması değil, bunu yapmaya ve kendini bir STL kabı olarak gizlemeye çalışması değil . Düz bir bit seti, aynı zamanda bir STL kabı gibi görünmediği sürece iyi olurdu.
bool
veri türünü, tanımlanmış olan Windows BOOL
türü ile karıştırıyor olabilirsiniz long
. Yani sizeof(bool) != sizeof(BOOL)
, eminim ki çok fazla kafa karışıklığına (ve muhtemelen çok sayıda hataya) neden olur. Özellikle de vardır çünkü boolean
ve BOOLEAN
rumuzudur Windows typedefs, unsigned char
. Ayrıca, bool
1 bayt olması yaygın olsa da, C ++ standardının özellikle sizeof(bool)
daha büyük olabileceğini belirten bir nota sahip olduğunu unutmayın .