Просто наткнулся на assert, что не удалось, поскольку он сравнил false с возвращаемым типом функции, так как сама функция возвратила bool, и assert проверил не только значение, но и тип возвращаемого значения, чтобы соответствоватьложь, чтобы гарантировать, что бул возвращается.Теперь проблема в том, что C99 определяет bool как _Bool, а _Bool даже не обязательно имеет тот же размер, что и int (на самом деле, по моему опыту, на большинстве платформ в настоящее время он часто имеет тот же размер, что и unsigned char), не говоря уже о том, чтобы быть тем же самымtype (что на самом деле невозможно, так как _Bool является встроенным типом языка в C99), но определяет false и true как 0 и 1 без каких-либо определений типов и препроцессоров без преобразования типов, по умолчанию используется значение int.Если C99 вместо этого определит false и true как ((bool) 0) и ((bool) 1), они всегда будут иметь тип bool, независимо от того, как определен _Bool.Так есть ли веская причина, чтобы они всегда определялись как целые, даже если bool не является целым на этой платформе или это просто ошибка в языке, которую следует исправить с помощью C1x?