有趣的问题,为什么C语言中的十六进制数以前缀0x开头?

C语言允许程序员逐位操作变量,此时,最直观的数字表示方式自然是二进制。不过这样常常会让数字看起来“过长”,例如十进制的 255 使用二进制表示为 1111111

大家好,感谢邀请,今天来为大家分享一下有趣的问题,为什么C语言中的十六进制数以前缀0x开头?的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

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

在C语言中,十六进制数往往以0x或0X前缀开头,这是烙印在很多程序员骨子里的东西。一个有趣的问题是,为什么十六进制数以0x开头?这样做有什么历史渊源或者特殊的好处吗?

想一想:C语言中的八进制数以前缀“0”开头。例如,04524代表八进制数,十进制等于2388。现在想象一下如何表示十六进制数?我可以像汇编一样在数字末尾添加后缀“h”吗?例如,80h 表示十六进制的80(等于十进制的128)。

不幸的是,十六进制数字也有ABCDEF 字符。如果某个C语言代码中出现以字母开头的数字,例如F0h,C语言编译器会将其解释为变量吗?还是数字?所以这样做并不是一个好的选择。

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?

这不是一个好的选择

同样,在数字前面加上h或者在数字前面加上x来表示十六进制也会导致同样的问题。

事实上,早在20 世纪60 年代,最流行的编程数字系统就是十进制和八进制。当时的机器中每个字节的位数是不确定的。有些机器每个字节有12 位,还有24 位、36 位,可以很好地被3=log2(8) 整除。

八进制数使用0 前缀

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?

BCPL 语言使用符号8 1234 来表示八进制数。后来,Ken Thompson 在BCPL 语言的基础上创建了B 语言。他修改了这个表示方法——,使用0前缀来表示八进制数。这一改进带来了一系列好处:

对于编译器来说,整数常量始终可以由单个标记组成。编译器仍然正确地识别出这是一个数字。编译器立即识别出这是一个八进制数。 00005 和05 相等。不需要使用特殊字符(例如1234)。后来Thompson从B语言创建C语言时,就保留了这个特性。后来我发现十六进制数字使用起来非常方便,所以我选择了0x作为十六进制数字的前缀。

用户评论

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
放肆丶小侽人

我经常会对编程语言里的细节感到好奇,比如 c语言里为什么一定要写 0x 来表明十六进制数。这样看起来很简洁,是不是为了减少代码长度?

    有7位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
雁過藍天

这篇文章讲得很清楚!我一直都觉得加个“0x”能提高代码的可读性,让新手一看就知道这是十六进制数,避免了混乱。

    有12位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
稳妥

其实这个问题很简单啊,就是为了区分十六进制和十进制数字。C语言里没有专门的符号表示十六进制,所以就用“0x”作为前缀来表示。学习过汇编的人都知道这很重要!

    有6位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
玩味

我一直没明白这一点,谢谢作者解释清楚了!以前写代码的时候确实经常和同事混淆,现在应该不会再犯这个错误了。

    有20位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
陌上花

说的真好!我最近也在学习 C 语言,遇到这个问题就很难理解。看完文章感觉豁然开朗,原来是这样啊。感谢分享!

    有15位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
别伤我i

说实话,这种小细节有时候真的会让人头疼。我更习惯用大写“O”开头表示十六进制,因为我觉得更容易识别。不过0x确实比较常见,还是得学会使用吧。

    有17位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
龙吟凤

我一直觉得这个 0x 前缀完全没必要,太繁琐了!十进制和二进制都很清晰,为什么要搞一个额外的表示法?

    有6位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
万象皆为过客

学习编程语言的时候,的确要关注这些细节。就像用不同的颜色区分代码块,可以让程序更容易阅读和理解一样,使用 0x 前缀也能提高代码的可读性。

    有6位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
妄灸

C语言有很多奇怪的地方,比如这个“0x”就是一例。难道不能用更简洁、更直观的符号来表示十六进制数字吗?

    有20位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
莫阑珊

我觉得文章解释得不够准确, 0x 在 c 语言里虽然能区分十六进制和十进制的数,但在低层程序设计中, 比如汇编语言, “0x” 前缀并不是严格必要的!

    有15位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
迷路的男人

这篇文章很不错!让我对 C 语言的历史背景有了更深的理解。原来在使用计算机时,我们不得不面对各种格式限制?

    有12位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
ヅ她的身影若隐若现

感谢作者用通俗易懂的语言解释了这个看似枯燥的概念。我现在终于明白“0x” 的含义了,下次写代码再也不混淆!

    有7位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
烬陌袅

C语言的设计师也太过谨慎了吧?为了区分十进制,わざわざ使用 0x 前缀,让人感觉非常繁冗。

    有9位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
葵雨

学习 C 语言真是一件很磨人的事!这些看似微不足道的细节却容易让新手陷入混乱。感谢作者分享的知识点,让我在学习中少走弯路!

    有6位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
一个人的荒凉

我同意文章观点, 0x 前缀可以提高代码的可读性,但是也需要考虑编程效率,有时候用十进制表示可能更快更直接些!

    有6位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
凉凉凉”凉但是人心

这个问题确实很无聊… 难道不应该把精力放在更有意义的事情上吗? 比如如何提高程序的性能,或者学习更高级的编程语言。

    有11位网友表示赞同!

有趣的问题,为什么C语言中的十六进制数以前缀0x开头?
颓废人士

学习编程过程中总会遇到一些奇怪的做法, “0x”就是其中之一。 但随着时间推移,你会慢慢适应这些规则,最终能理解背后的原因。!

    有10位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/194251.html

(0)
小su的头像小su
上一篇 11小时前
下一篇 11小时前

相关推荐

发表回复

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