为什么十六进制数预先固定为0x
?
我理解前缀的使用,但我不明白为什么选择0x
的重要性.
最佳答案
简短的故事:0
告诉解析器它处理常量(而不是标识符/保留单词).仍然需要指定数字基数:x
是一个任意选择.
长篇小说:在60年代,流行的编程数字系统是十进制和八进制,主帧每字节有12,24或36位,3=log2(8)很好地可见。
BCPL语言使用八进制数字的语法8 1234
.当Ken Thompson从BCPL创建B时,他使用0
前缀.这很棒,因为
- 整数常数现在总是由一个令牌组成
- 解析器仍然可以立即告诉它有一个常数
- 解析器可以立即告诉基础(
0
在两个基础上相同), - 它在数学上是理智的(
00005 == 05
), - 不需要珍贵的特殊字符(如
#123
)。
当C从B创建时,出现了十六进制数字的需要(PDP-11有16位单词),上面的所有点都仍然有效.由于其他机器仍然需要八进制,因此任意选择0x
(00
可能被排除为尴尬).
C#是C的后代,因此它继承语法.
上一个问题:python – 未应用于字符串的填充
下一个问题:如何为当前用户获取临时文件夹