LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Булев тип Типы bool8, bool16, bool32 и т.п.

поскольку вы решили (и зря) что true - это хоть один ненулевой бит в значении… то преобразования - bool32->bool16->bool8 вам придется делать с неустранимой проверкой, поскольку ненулевой бит может не полезть в более узкий тип. это раз.

по той же самой причине операции сравнения двух значений типа bool будут тоже наворотом с фактически приведением к каноническому true=1…. это двас.

не копируйте подход си. он не всегда полезный.

зы. типы с «фиксированной точкой» вообще тут рассматривать не надо, поскольку бул еще можно как-то (скрепя сердцем) преобразовывать к целым, но преобразовывать его к числам вообще - это перебор. то есть прямое явное преобразование була к фиксированной точке и float - надо запрещать(это спасет вас от случайных ошибок). если такой бред кто-то захочет сделать, пусть кастит бул в целое, а потом целое в вещественное.

Исходная версия alysnix, :

Булев тип Типы bool8, bool16, bool32 и т.п.

поскольку вы решили (и зря) что true - это хоть один ненулевой бит в значении… то преобразования - bool32->bool16->bool8 вам придется делать с неустранимой проверкой, поскольку ненулевой бит может не полезть в более узкий тип. это раз.

по той же самой причине операции сравнения двух значений типа bool будут тоже наворотом с фактически приведением к каноническому true=1…. это двас.

не копируйте подход си. он не всегда полезный.