文档章节

谈谈编程语言学习中的unsigned类型

一个破名想半年
 一个破名想半年
发布于 2016/11/12 16:24
字数 819
阅读 25
收藏 0

     整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。

    无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数(注意是正整数形式)数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。就是int类型的范围从-2^15~2^15-1更改为0~ 2^16-1。

    由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

     我们都知道,两个不同的数据类型在进行混合使用时,会自动进行类型转换。其转换原则就是:向着精度更高、长度更长的方向转换。也就是我们平常见到的 char 转为 int ,int 转为 long,float 转为 double  . etc. 那么当涉及到unsigned 类型时,又会进行怎样转换呢?

查一下文档,找到这么一段:

ANSI C 标准采用值保留(value preserving)原则,就是当把几个整型操作数混合使用时,其结果的类型可能是有符号数,也可能是无符号数,这取决于操作数的类型的相对大小。(通俗点说,就是两个整型数,如果都转换为signed不会丢失信息,就转换为signed;否则就转换为unsigned。)

    当然,这些都是网上查阅的资料,我把重点部分都整理出来。还有更重要的一点:java中没有unsigned!

学习java的同学可以松口气了,不过想要详细了解Java中的unsigned转换可以参考:http://blog.csdn.net/wangkr111/article/details/7780943

学习c的同学想要深入了解可以点:http://blog.csdn.net/jiajiayouba/article/details/9297815

    让我们来看看mysql中的unsigned:

mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。

mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大 值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。

 

© 著作权归作者所有

一个破名想半年
粉丝 0
博文 16
码字总数 9936
作品 0
青浦
私信 提问
嵌入式开发之C基础学习笔记10--总结

嵌入式C总结 一.学习编程语言的一些建议 1)多动手 学习编程唯一方法就是编写调试程序。看再多的书,效果也比不上设计调试一个简单程序 2)养成良好的编程习惯 3)注意细节 4)了解开发环境 ...

吴锦涛
2012/12/16
0
0
swift4.1 系统学习二十 类型定义和类型投射

/* 今天为止,我们终于把swift中大部分的数据类型都给细细的学习了一遍。也写了很多很多的测试代码,相信大家对swift应该有了全新的认识。接下来我们继续学习swift语言的一些特性。 本节呢,...

小曼Study
2018/10/28
0
0
六、基本数据类型

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 C语言有丰富的数据...

长平狐
2013/03/28
75
0
关于C/C++的几点认识

从学习C语言开始,已经接触这门语言好几年了,不敢说有多精通,本文就本人以往遇到过的几个问题做一个说明。 1、认识C语言的安全隐患。 首先,我们来看一个简单的例子。 我们常见的strcpy函数...

长平狐
2013/12/25
34
0
c语言中的面向对象(1)----kobject 和 container_of

最近看驱动开发,看linux的device model,有一些感触。暂记于下。 我之前一直把OO(object oriented)这个概念和特定的语言联系在一起。比如,认为c++,java,python等是面向对象的语言,C语...

ChenQi
2011/11/28
0
3

没有更多内容

加载失败,请刷新页面

加载更多

凭什么看不起外包员工?外包还值得进吗?

前言 > 最近有好多人讨论外包,前几天看到一个帖子说就是有一个外包吃了公司的的零食,遭到HR当场批评, 搞的整个IT界备受关注,那么外包公司和非外包公司有什么样的不一样呢?我今天也说说我...

终端研发部
25分钟前
2
0
WinSCP得到root权限 ubuntn

WinSCP如果进行sudo? 首先 要在 /etc/sudoer 最后一行加上 你的用户名 ALL=NOPASSWD:ALL 然后到 winscp里的编译一下站点属性 SFTP -> SFTP 服务器 输入 sudo /usr/lib/openssh/sftp-server ...

shzwork
28分钟前
2
0
Centos 7 安装 Docker

参考 https://yq.aliyun.com/articles/110806 1. 卸载旧版的 docker $ sudo yum remove docker \ docker-client \ docker-client-latest \ ......

北漂的我
53分钟前
2
0
GitLab 发布新版本,增强的操作仪表板

昨天,GitLab的团队发布了GitLab 11.10,一个基于Web的DevOps生命周期工具。这个版本提供了新的特性,包括操作仪表板上的管道、合并结果的管道等等。 GitLab 11.10有什么新内容? 增强操作指示...

linuxCool
58分钟前
2
0
spring application 之 ResolvableType

jdk1.5 的泛形 变量类型 <t>,<t,k>,<t extends list & map> 这些都是变量类型 类 class A<t extends b & list,k t>{}TypeVariable[] tvs = A.class.getTypeParameters()tvs 的 name 就是......

my_juke
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部