(10)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第二节

本文介绍了C语言中基本数据类型的修饰符,如signed、unsigned、long和short,并讨论了这些修饰符如何改变数据类型的含义及其适用场景。文章还详细解释了有符号和无符号整型的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型的修饰

      除了void数据类型以外,每一种基本数据类型都可以在前面加上多种修饰符。这些修饰符可以改变这些基本数据类型的含义,使得它们可以更准确的适合各种不同的情形。常见的修饰符有以下几个:
signed
unsigned
long
short

      可以用signed、short、long、unsigned来修饰整型,可以用unsigned和signed修饰字符型,同样也可以使用long来修饰double类型(双精度浮点类型)。修饰符加上基本数据类型可以组合出很多种不同的数据类型,这在上一节的表2-1.中已经全部罗列过。表2-1.同时也列出了这些数据类型对应的最小数值范围和近似的位宽。需要指出,表2-1.中的数据类型虽然都是c语言标准下的,但是它们同样适用于典型的c++实现。在这个表中所指出的数据类型的最小范围也是c/c++标准所规定的,它们不一定和应用中常见的数值范围完全相符。比如说,在使用二进制补码算法的计算机上,整型的数值范围至少是-32767到32768。

      在整型前使用signed修饰符是允许的,但是这样做比较多余,因为默认情况下整型就是有符号的。signed修饰符最主要的用途是修饰char类型,因为默认情况下char类型是无符号的。

      有符号和无符号整型的区别就在于对高位(逻辑上的最左位)的不同解释上。当一个整型被定义为有符号整型时,编译器会将高位作为这个整型的符号位。高位为0代表数为正,高位为1代表数为负。通常,负数都是用二进制补码表示,也就是将除了符号位之外的所有位都取反再加1,之后再将符号位置为1。

      有符号整型对于大部分运算来说非常重要,但是它所能表示的绝对值(absolute magnitude)范围仅仅是对应的无符号整型的一半。例如,十进制数32767的二进制表示为:
0111111111111111
如果把高位置为1,则这个数作为有符号数表示十进制的-1,作为无符号数则表示十进制数的65535。

      如果把修饰符单独使用,也就是它们不在加在基本类型符号的前面的时候,那么将会假定它们修饰的是int整型。也就是说有如下的等价情况:
      Specifier                    Same As
      signed                       signed int
      unsigned                     unsigned int
      long                         long int
      short                        short int
      尽管直接使用修饰符暗含着其被修饰类型为int,大部分程序员还是习惯在声明的时候显式的书写int。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值