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*;