Добавление отдельного типа «Boolean», не совместимого с целыми числами, сделало бы компилятор более сложным, чем просто использование целых чисел для этой цели. Наличие отдельного булева типа, совместимого с целыми числами, требует указания возможных последствий сохранения значения, отличного от 0 , или 1 в логическом объекте, или выполнения числовых вычислений на объекте Boolean , представление которого не содержит ни ассоциированного битового шаблона с «0» или «1». Дано:
someBool = intFunction();
someInt = someBool;
требуя, чтобы someInt должен получить значение 1, если intFunction возвращает любое ненулевое значение, как правило, делает выше дороже
someChar = intFunction();
someInt = someChar;
В тех случаях, когда потребовались бы бывшая семантика, они могут быть достигнуты без использования логического типа, с помощью:
someChar = !!intFunction();
someInt = someChar;
Поскольку все, что может быть сделано с помощью логических типов также может быть сделано без них, и во многих случаях гр ode, который использует типы символов, может быть более эффективным, чем булевы типы, я бы предположил, что никогда не было (и до сих пор нет) никакой реальной необходимости для них.
-1: Какая проблема решается, зная историю реализации Kernighan's и Ritchie's деталей C? –
@ S.Lott - извините, я пропустил понимание цели StackOverflow? Этот вопрос не связан с программированием? Из FAQ: «Это место для вопросов, на которые можно ответить». «Пока ваш вопрос ... подробный и конкретный, написанный ясно и просто, интерес к хотя бы одному другому программисту». Что еще я пропустил? –
@ S.Lott Я подозреваю, что вы должны удалить главу «Фон и история» из своей книги Python. –