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个电子开关)!  

 
posted @ 2012-08-02 09:39  冷夜 - 网游编程技术  阅读(1110)  评论(0编辑  收藏  举报