C++根本数据类型列表
ANSI C/C++
基本数据类型:
Type
Size
数值范围
无值型
void
0 byte
无值域
布尔型
bool
1 byte
true
false
有符号短整型
short [int] /signed short [int]
2 byte
-32768~32767
无符号短整型
unsigned short [int]
2 byte
0~65535
有符号整型
int /signed [int]
4 byte
-2147483648~2147483647
无符号整型
unsigned [int]
4 byte
0~4294967295
有符号长整型
long [int]/signed long [int]
4 byte
-2147483648~2147483647
无符号长整型
unsigned long [int]
4 byte
0~4294967295
long long
8 byte
0~18446744073709552000
有符号字符型
char/signed char
1 byte
-128~127
无符号字符型
unsigned char
1 byte
0~255
宽字符型
wchar_t (unsigned short.)
2 byte
0~65535
单精度浮点型
float
4 byte
-3.4E-38~3.4E+38
双精度浮点型
double
8 byte
1.7E-308~1.7E+308
long double
8 byte
说明:
(
1
)类型修饰符
signed
和
unsigned
用于修饰字符型和整形。
(
2
)类型修饰符
short
和
long
用于修饰字符型和整形。
(
3
)当用
signed
和
unsigned
、
short
和
long
修饰
int
整形时,
int
可省略。
(
4
)其中
bool
和
wchar_t
是
C++
特有的。
(
5
)除上表以外,
C/C++
都可以自定义枚举
enum
、联合
union
和
struct
结构体类型。
(
6
)以上
sizeof
通过
Windows XP 32
位平台测试,其中某些类型数据的字节数和数值范围由操作系统和编译平台决定。比如
16
位机上,
sizeof(int) = 2
,而
32
位机上
sizeof(int) = 4
;
32
位机上
sizeof(long) = 4
,而
64
位机上
sizeof(long) = 8
。除此之外,注意
64
位机上的
pointer
占
8byte
。
(
7
)
void
的字面意思是
“
无类型
”
,不能用来定义变量。
void
真正发挥的作用在于:
<1>
对函数返回和函数参数的限定,例如自定义既不带参数也无返回值的函数
void MyFunc(void);<2>
定义无类型通用指针
void *
,指向任何类型的数据。
(
8
)标准
C++
库及
STL
还提供了通用数据结构:字符串类
string
;向量类模板
vector
;双端队列类模板
deque
;链表类模板
list
;容器适配器堆栈类
stack
(实现先进后出的操作);容器适配器队列类
queue
(实现先进先出的操作);集合类
set
;多重集合类
multiset
;映射类
map
;多重映射类
multimap
;位集合
bitset
;迭代器
iterator (
类似指针的功能
,
对容器的内容进行访问
)
。
(
9
)
在标准
c++
中,
int
的定义长度要依靠你的机器的字长,也就是说,如果你的机器是
32
位的,
int
的长度为
32
位,如果你的机器是
64
位的,那么
int
的标准长度就是
64
位,而
vc
中
__int64
是为在
32
机位机器长实现
64
位长度的整形数。
(
10
)关于
32
位平台下的
int
和
long
long
从字面上看,应该是
64
位才更合理,把
long
当成
32
位实在是一个历史的包袱。像
C#
那样新起炉灶的程序语言,由于没有需要支持老代码的问题,就把
long
当作
64
位来处理了。
在
32
位平台下,
long
是相对
short
而言,
long
(
short
)类型是
long
(
short
)
int
类型的简称,
sizeof(long) = sizeof(int) = 4
。
int
和
long
的范围虽然一样
,
但输入输出格式不同
,printf int
的格式为
%d
,而
printf long
的格式为
%ld
。
考虑到程序的可移植性,还是要将他们区分开来。但当要求的数值范围为
4byte
时,建议使用
int
类型,因为第一版的
C
语言只有一种类型,那就是
int
。
(
11
)在
Win32 API
及
MFC
中为了使类型名称在语意上更明了,对以上基本类型进行了大量的
typedef
。例如
WINDEF.H
中的
BYTE,WORD,DWORD
。
(
12
)计算机内部内存的基本单位是1byte(8个电子开关)!