C++学习笔记(重温计划之三)

3、数据类型(上)

 c++中的数据类型,主要分为内部数据类型和外部数据类型两大类。其中,内部数据类型主要有:

  1)整数类型int;

   计算机内部是以二进制补码的形式表示整数的。从十进制转换的具体方法为除二取余、高位补零、再取反。整形数的表示范围如下:

类型 字节数 位数 表示范围 解释
下限 上限
char 1 8 -128 128 -2^7~(2^7-1)
signed char 1 8 -128 128 -2^7~(2^7-1)
unsigned char 1 8 0 255 0~(2^8-1)
short int 2 16 -32768 32767 -2^15~(2^15-1)
signed short int 2 16 -32768 32767 -2^15~(2^15-1)
unsigned short int 2 16 0 65535 0~(2^16-1)
int 4 32 -2147483648 2147483647 -2^31~(2^31-1)
signed int 4 32 -2147483648 2147483647 -2^31~(2^31-1)
unsigned int 4 32 0 4294967295 0~(2^32-1)
long int 4 32 -2147483648 2147483647 -2^31~(2^31-1)
signed long int 4 32 -2147483648 2147483647 -2^31~(2^31-1)
unsigned long int 4 32 0 4294967295 0~(2^32-1) 

 不过,随着64位cpu的应用,上表内容将有进一步扩充。同时在进位计数制中,以0起始的数字表示八进制,以0x起始表示十六进制。在基本取余运算%中,余数的符号决定于被除数的符号。

  2)字符类型char;

   ASCII码有128个字符,字符型需加’ ‘。例如ASCII码为65的字符’A’。下面是除此之外的转义字符。

字符形式 整数值 代表符号 字符形式 整数值 代表符号
\a 0x07 响铃bell " 0x22 双引号
\b 0x08 退格backspace ' 0x27 单引号
\t 0x09 水平制表符HT \? 0x3F 问号
\n 0x0A 换行return \ 0x5C 反斜杠字符
\v 0x0B 垂直制表符VT \ddd 0ddd 1~3位八进制数
\r 0x0C 回车 \xhh 0xhh 1~2位十六进制数

  3)枚举类型enum;

   枚举型是对整数区间的自定义类型,通常用于整数常量。例如:

   enum Week{mon,tue,wed,thu.fri,sat,sun};

   默认第一个枚举符mon=0,以此类推。或者:

   enum Color{Red=5,Green,Yellow,Blue=20,Orange};

   由上可知,Green=6…Orange=21;枚举的好处是,在代替整数常量的过程中,枚举不需要初始化常量而直接使用,提高编写效率。

  4)布尔类型bool;

   布尔类型实际的存在意义为:

   enum bool{false,true};

   因此可以进行0或1的逻辑运算。例如:

   bool a = 3;  //a为true;

   在i/o流中,cout<<boolalpha<<a<<endl;//输出结果为false,如果不做boolalpha设置则输出为0;

  5)浮点型;

   浮点型包含单精度浮点float、双精度浮点double以及长双精度浮点long double。其中float、double、long double的十进制有效位数分别为7位、15位和19位。

  外部数据类型等变异类型:

  1)整形数组int[];

  2)浮点应用double&;

  3)字符指针char*;