这是我对C/C++中数据类型的一些总结
类型 | 占用字节 | 范围 |
---|---|---|
char | 1 | -128 ~ 127 |
unsigned char | 1 | 0 ~ 255 |
short [int] | 2 | -32768 ~ 32767 |
unsigned short [int] | 2 | 0 ~ 65535 |
int | 4 | -2147483648 ~ 2147483647 |
unsigned [int] | 4 | 0 ~ 4294967295 |
long [int] | 4 | -2147483648 ~ 2147483647 |
unsigned long [int] | 4 | 0 ~ 4294967295 |
long long [int] | 8 | -9223372036854775808 ~ 9223372036854775807 |
unsigned long long [int] | 8 | 0 ~ 18446744073709552000 |
float | 4 | -3.4E-38 ~ 3.4E+38 |
double | 8 | 1.7E-308 ~ 1.7E+308 |
long double | 视具体的编译器而定 | 视具体的编译器而定 |
bool | 1 | true/false |
wchar_t | 2 | 0 ~ 65535 |
备注:
1. 上述结果是在32位机器下的结果;其中,long在32位下是4字节,但在64位下是8字节,指针在32位下是4字节,但在64位下是8字节,其余的不变。
2. short,int,long,long long默认是signed(有符号),而C标准对char的描述是Implementation Defined(由实作环境决定),即由具体的编译器决定,所以为了代码的安全和可移植,若要声明有符号的char,应用signed char。
3. 当用signed和unsigned、short和long修饰int整形时,int可省略。
4. bool和wchar_t是C++特有的。
5. void的字面意思是“无类型”,不能用来定义变量。void真正发挥的作用在于:<1> 对函数返回和函数参数的限定<2>定义无类型通用指针void*,指向任何类型的数据。
6. 标准C++库及STL还提供了通用数据结构:字符串类string;向量类模板vector;双端队列类模板deque;链表类模板list;容器适配器堆栈类stack(实现先进后出的操作);容器适配器队列类queue(实现先进先出的操作);集合类set;多重集合类multiset;映射类map;多重映射类multimap;位集合bitset;迭代器iterator (类似指针的功能,对容器的内容进行访问)。