为什么十六进制数字的前缀是0x?

为什么十六进制数字的前缀是0x
我理解前缀的用法,但我不理解为什么选择了0x

短故事:0告诉解析器它正在处理一个常量(而不是标识符/保留字)。仍然需要一些东西来指定基数:x是一个任意选择

长话短说:在60年代,流行的编程数字系统是十进制的,八进制的——大型机每字节有12、24或36位,可以很好地被3=log2(8)整除

BCPL语言对八进制数使用语法81234。当Ken Thompson从BCPL创建B时,他使用了0前缀。这很好,因为

  1. 整数常量现在总是由单个标记组成
  2. 解析器仍然可以立即判断它有一个常数
  3. 解析器可以立即告诉基(0在两个基中是相同的)
  4. 它在数学上是合理的(00005==05),并且
  5. 不需要宝贵的特殊字符(如#123

当从B创建C时,需要十六进制数(PDP-11有16位字),并且上面的所有点仍然有效。由于其他机器仍然需要八进制,0x是任意选择的(00可能被排除为笨拙)

C#是C的后代,因此它继承了语法

发表评论