Почему шестнадцатеричные числа с префиксом 0x?

376
задан Thomas Bratt 14 November 2015 в 11:23
поделиться

1 ответ

Примечание: я не знаю правильного ответа, но нижеприведенное - всего лишь мое личное предположение!

Как уже упоминалось, 0 перед числом означает восьмеричное:

04524 // octal, leading 0

Представьте, что вам нужно придумать систему для обозначения шестнадцатеричных чисел, и обратите внимание, что мы работаем в среде стиля C. Как насчет того, чтобы закончить сборку h? К сожалению, вы не можете - это позволит вам создавать токены, которые являются действительными идентификаторами (например, вы могли бы назвать переменную тем же самым), что привело бы к некоторым неприятным двусмысленностям.

8000h // hex
FF00h // oops - valid identifier!  Hex or a variable or type named FF00h?

Вы не можете вести с символом по той же причине:

xFF00 // also valid identifier

Использование хеша, вероятно, было выброшено из-за конфликта с препроцессором:

#define ...
#FF00 // invalid preprocessor token?

В конце концов, по какой-то причине они решили поставить x после начального 0 для обозначения шестнадцатеричного числа. Это однозначно, так как он по-прежнему начинается с символа числа, поэтому не может быть допустимым идентификатором и, вероятно, основан на восьмеричном соглашении о начальном 0.

0xFF00 // definitely not an identifier!
92
ответ дан 22 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: