c语言中表示十六进制数字的前缀_16进制的前缀是零还是o

c语言中表示十六进制数字的前缀_16进制的前缀是零还是oC语言中最直观的数字表示方式自然是二进制.不过这样常常会让数字看起来“过长”,在C语言程序开发中,为了程序员阅读代码的方便,需要逐位操作变量时,常常使用十六进制,相对而言更加直观.在C语言中,

C语言中最直观的数字表示方式自然是二进制.不过这样常常会让数字看起来“过长”,在C语言程序开发中,为了程序员阅读代码的方便,需要逐位操作变量时,常常使用十六进制,相对而言更加直观.

d58dc4ac2ea8bd558656eb0c9aeb3922.png

在C语言中,为什么十六进制的数字前缀用 0x 呢?

在C语言中,十六进制的数字常常以 0x 或者 0X 前缀开头,这是印在很多程序员骨子里的东西。一个有趣的问题是,为什么十六进制数字以 0x

开头呢?这样做有什么历史渊源或者特别的好处吗?

联想一下:C语言中的八进制是以前缀“0”开头的,例如 04524 就表示一个八进制数字,它等于十进制的

2388。现在想象一下,怎样表示十六进制数字呢?能像汇编那样,在数字尾部添加后缀“h”吗?例如,80h 表示十六进制的 80(它等于十进制的 128)。

不幸的是,十六进制数字还有 ABCDEF 字符,如果在某段C语言代码中,出现了字母开头的数字,例如

F0h,C语言编译器是将其解释为变量呢?还是数字呢?因此这样做并不是一个好的选择。

类似的,还有将 h 放在数字前面,或者 x 放在数字前面表示十六进制,也会带来同样的问题。

事实上,早在上世纪 60 年代,最流行的编程数字系统是十进制和八进制,那个时候的机器中每字节的位数是不确定的,有的机器中每字节有 12 位,还有 24

位,36 位的,可以很好地被 3=log2(8)整除。

49e81daf9b894db60589a0f360521e56.png

BCPL 语言使用符号 8 1234 表示八进制数字,后来 Ken Thompson 根据 BCPL 语言创立了 B

语言,他修改了这一表示方法——使用 0 前缀表示八进制数字,这样的改进带来了一系列好处:

对于编译器来说,整型常量总是可以由单个标记(token)组成。编译器仍然可以准确的识别出这是一个数字。编译器可以立即识别这是八进制数字。00005 和

05 是相等的。不需要使用特殊字符(例如1234表示)。后来 Thompson 从 B

语言创立C语言时,保留了这一特性。后来发现十六进制数字用起来很方便,选择了 0x 作为十六进制数字的前缀。

以上就是小编带来的C语言中的十六进制数字为什么以前缀0x开头的全部内容,希望可以提供帮助。

今天的文章c语言中表示十六进制数字的前缀_16进制的前缀是零还是o分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89569.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注