(10)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第二节
2007-03-09 11:47
489 查看
基本数据类型的修饰
除了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。
除了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。
相关文章推荐
- (18)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第十节
- (16)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第九节操作符(1)
- (14)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第六节
- (15)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第七、八节
- (11)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第三节
- (27)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第二节
- (36)'c++:COMPLETE REFERENCE' 第一部分 第五章(指针) 第二节
- (3)'c++:COMPLETE REFERENCE' 第一部分 第一章(c语言概述) 第二节
- (33)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第八节
- (26)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第一节
- (31)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第六节
- (6)'c++:COMPLETE REFERENCE' 第一部分 第一章(c语言概述) 第五节
- (19)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第一节
- (30)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第五节
- (4)'c++:COMPLETE REFERENCE' 第一部分 第一章(c语言概述) 第三节
- (7)'c++:COMPLETE REFERENCE' 第一部分 第一章(c语言概述) 第六节
- (8)'c++:COMPLETE REFERENCE' 第一部分 第一章(c语言概述) 第七节
- (22)'c++:COMPLETE REFERENCE' 第一部分 第三章(语句) 第三节(2)
- (28)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第三节
- (32)'c++:COMPLETE REFERENCE' 第一部分 第四章(数组和以空字符结束的字符串) 第七节