|
Если по каким-либо соображениям переменной типа bool не присвоить начального значения, то приведение ее к целому типу может привести к неожиданному результату.
bool b; // не инициализировано
int i = (int)b;
Вместо безобидных 0 или 1 (подумаешь, какая мелочь :) можно получить например ужасающие 255.
Здесь конечно можно возразить: раз не присвоил начального значения, то сам и виноват. Однако тип bool может принимать только два значения false и true, которые по стандарту преобразуются к нулю и единице соответственно. Тем более, что обратное преобразование всегда работает корректно
int i; // не инициализировано
bool b = i;
int i2 = (int)b;
i2 всегда будет либо 0 либо 1.
Вот такая баго-фича.
ЗЫ. Конечно это имеет отдаленное отношение к микроконтроллерам, однако если будет интерес, то могу еще про double написать :).
E-mail: info@telesys.ru