打印
[其它产品/技术]

数据类型的有符号和无符号

[复制链接]
65|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2024-9-28 21:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一个数据类型为什么还要分有符号和无符号啊,真心累啊。
主要目的还是为了省空间!省空间!省空间!(当然,还有为了配合计算机指令运算效率的原因,这里不深入)。

举个自然语言的例子吧:我们给了4个空间来表示一个数字。



如果我们规定这个数是非负数(无符号),那么,这4个空间可以表示的范围是0000 ~ 9999。



如果我们规定这个数是可正、可负、可零(有符号),那么这4个空间里面就得留一个符号的空间,那么这4个空间可以表示的范围就是-999 ~ +999。



也就是同样的空间,无符号的数据类型可以表示更大的范围。否则,同样的范围,采用有符号的数据类型,就需要更多的空间。

简单点说,unsigned无符号数据类型,对比同类型的signed有符号类型,节省了一个符号占位, 同样的空间大小表示的数据范围更大


那char、short、int、long,既没有明确是unsigned 、signed类型,那到底是有符号还是无符号的?

先说正常的short、int、long,没有指明的情况下,默认是有符号的。也就是short和signed short是一样的。

而char是一个骨骼奇异的品种,在没有特别指明是unsigned、signed类型时, 有的地方是有符号的,有的地方是无符号的


而float、double默认就是有符号的,且没有无符号类型,也就是只有可正、可负、可零的类型。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

2116

帖子

4

粉丝