Sizeof(bool)?

Да, неужели? А попробовать?

А вопрос Вам был задан правильный. Если уж Вы делаете/моделируете bool, то поле надо объявлять либо bool, либо unsigned, но никак не int, т.к. в языке чётко сказано, что bool – беззнаковый. Ну, и зачем делать знаковую подложку беззнаковому значению? Грабли ищете? Так их там есть!

Ну у меня и есть unsigned. Или вы про что-то другое?

PS: когда мы задаем члены-битовые поля, то неплохо было бы использовать тип с известным количеством битов. Например, как моем коде - unsigned int.

Использовать bool с битовым полем - сомнительная идея. Потому, как неизвестно, сколько в нем битов.

Нет, как раз про это. Например, про то, что char – ни разу не unsigned.

1 лайк

Я где-то упустил , видимо, нить беседы. Какой чар? Какой правильный вопрос? Вопрос был - почему используется численный тип, а не bool. Ответ - потому, что в unsigned int много битов, и можно напихать кучу булевых переменных.

Видимо, так и есть

1 лайк

А так то нельзя?

  struct TManyBools {
	  bool  var0 : 1;
	  bool  var1 : 1;
	  bool  var2 : 1;
	  bool  var3 : 1;
	  bool  var4 : 1;
	  bool  var5 : 1;
	  bool  var6 : 1;
	  bool  var7 : 1;
	  bool  var8 : 1;
	  bool  var9 : 1;
	  bool  var10 : 1;
	  bool  var11 : 1;
	  bool  var12 : 1;

  };

А, вот оно что. Я имел ввиду размер в битах а не знаковость.

Можно, можно :).