unsigned和signed的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unsigned和signed的区别
--来⾃百度
整型的每⼀种都分为:⽆符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在除char以外的数据类型中,默认情况下声明的整型变量都是有符号的类型;char在默认情况下总是⽆符号的。

在除char以外的数据类型中,如果需声明⽆符号类型的话就需要在类型前加上unsigned。

⽆符号版本和有符号版本的区别就是⽆符号类型能保存2倍于有符号类型的正整数数据,⽐如16位系统中⼀个short能存储的数据的范围为-32768~32767,⽽unsigned能存储的数据范围则是0~65535。

由于在计算机中,整数是以补码形式存放的。

根据最⾼位的不同,如果是1,有符号数的话就是负数;如果是⽆符号数,则都解释为正数。

另外,unsigned若省略后⼀个关键字,⼤多数编译器都会认为是unsigned int。

C语⾔中的 unsigned int 和 signed int 类型的区别,最⼤的区别就是最⾼位是否⽤来做符号位。

但是char类型怎么可能还区分正字符和负字符呢?
C语⾔中并没有专门⽤来表⽰字符的数据类型,char 像 int、short 类型⼀样,也是⼀种整型,只不过,char 类型是最短的整型⽽已,所以它当然可以有 signed 和 unsigned 两种类型。

的确,char 是 character 的缩写,很多时候我们会把 char 类型当作是“字符类型”,但是在⾼度概括抽象的C语⾔中,字符也是整数,只不过它们遵循⼀些编码⽽已,因此说 char 类型也是⼀种整型并不为过。

如果要说C语⾔中 char 类型与 short、int 等整数类型的区别,除了占⽤内存宽度不同,其他唯⼀的区别可能就在于:char 类型⼀般不等同于 signed char 型。

char 类型⼀般不等同于 signed char 型
也就是说,不指定 signed 或者 unsigned 的 char 类型,在C语⾔中是未定义的,若考虑不同的编译器,我们不能确定 char 类型到底是有符号的,还是⽆符号的。

⽽对于 short、int 类型,如果不明确指定 signed 或者 unsigned,⼀般默认其为有符号的。

稍稍总结⼀下,C语⾔中的 unsigned char 型的变量最⾼位也⽤于表⽰数值⼤⼩,⽽ signed char 类型变量的最⾼位则⽤于表⽰数值的符号 +/-,char 型变量是否有符号,则属于未定义,在不同的编译器上表现可能是不同的。

相关文档
最新文档