Что-то, что вызвало у меня интерес, это определение типа BOOL в Objective-C.
Почему он определяется как signed char
(что может привести к неожиданному поведению, если ему назначено значение длиной более 1 байта), а не как int
, как это делает C (намного меньше поля для ошибки: нулевое значение является ложным, ненулевое значение является истинным)?
Единственная причина, по которой я могу придумать, - это микрооптимизирующая память проектировщиков Objective-C, поскольку char
будет использовать меньше памяти, чем int
. Пожалуйста, может кто-нибудь просветить меня?