为什么十六进制数的前缀是0x
?
我了解前缀的用法,但我不明白为什么选择 0x
的重要性。
最佳答案
短篇小说:0
告诉解析器它正在处理常量(而不是标识符/保留字)。仍然需要一些东西来指定数字基数:x
是一个任意选择。
长话短说:在 60 年代,流行的编程数字系统是十进制和八进制 — 大型机每字节有 12、24 或 36 位,可以很好地整除3 = log2(8)。
BCPL 语言对八进制数使用语法 8 1234
。当 Ken Thompson 从 BCPL 创建 B 时,他使用了 0
前缀。这很棒,因为
- 一个整数常量现在总是由一个标记组成,
- 解析器仍然可以立即判断它有一个常量,
- 解析器可以立即告诉基数(
0
在两个基数中是相同的), - 它在数学上是合理的 (
00005 == 05
),并且 - 不需要特殊字符(如
#123
)。
当从 B 创建 C 时,出现了对十六进制数的需求(PDP-11 有 16 位字)并且上述所有要点仍然有效。由于其他机器仍需要八进制数,因此任意选择了 0x
(00
可能被排除在外)。
C# 是 C 的后代,因此它继承了语法。
关于c - 为什么十六进制数的前缀是0x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670639/