Почему логический тип данных Objective C определяется как подписанный символ? - PullRequest
4 голосов
/ 06 апреля 2010

Что-то, что вызвало у меня интерес, это определение типа BOOL в Objective-C.

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

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

1 Ответ

6 голосов
/ 06 апреля 2010

Помните, что Objective-C был создан еще в 1980-х, когда сохранение байтов действительно имело значение.

Как упомянуто в комментарии, пока вы придерживаетесь значений YES и NO, все будет хорошо.

...