为什么十六进制数字的前缀是0x?
我理解前缀的用法,但我不理解为什么选择了0x
短故事:0告诉解析器它正在处理一个常量(而不是标识符/保留字)。仍然需要一些东西来指定基数:x是一个任意选择
长话短说:在60年代,流行的编程数字系统是十进制的,八进制的——大型机每字节有12、24或36位,可以很好地被3=log2(8)整除
BCPL语言对八进制数使用语法81234。当Ken Thompson从BCPL创建B时,他使用了0前缀。这很好,因为
- 整数常量现在总是由单个标记组成
- 解析器仍然可以立即判断它有一个常数
- 解析器可以立即告诉基(
0在两个基中是相同的) - 它在数学上是合理的(
00005==05),并且 - 不需要宝贵的特殊字符(如
#123)
当从B创建C时,需要十六进制数(PDP-11有16位字),并且上面的所有点仍然有效。由于其他机器仍然需要八进制,0x是任意选择的(00可能被排除为笨拙)
C#是C的后代,因此它继承了语法