background image

signed int

和 int 的一样

short int

-32767 到 32767

unsigned short int

0 到 65535

signed short int

和 short int 的一样

long int

-2147483647 到 2147483647

signed long int

和 long int 的一样

unsigned long int

0 到 4294967295

float

1E-37 到 1E+37 6 位精度

double

1E-37 到 1E+37 10 位精度

long double

1E-37 到 1E+37 10 位精度

表格 2-1 ANSI/ISO C++标准中定义的所有数字的数据类型和它们的最小取值范围
    注意上表中的最小取值范围仅仅是最小的取值范围。C++编译器是允许对这些最小的取
值范围进行扩展的,事实上大部分编译器都进行了扩展。因此 C++数据类型的取值范围是
和实现相关的。比如,在使用二进制补码的计算机上(几乎所有的计算机都是使用二进制

 

补码的),一个整型数的取值范围至少是 -32768 到 32767。但是无论在什么环境下,short 
int 的取值范围都是 int 类型的子域,而 int 类型的取值是 long int 的子域。针对
float,double 和 long double 也是一样的。这里子域的意思是说范围小于或者相等。因此,
int 和 long int 是可以有相同的取值范围的,但是 int 类型的取值范围不能大于 long int 类型
的。
    既然 C++明确的只是数据类型必须支持的最小范围,我们应该阅读自己使用的编译器
的文档,以便明确实际支持的范围是多少。例如,表格 2-2 显示了在 32 位环境下 C++中数
据类型的典型位宽,windows XP 就是这样的环境。让我们了仔细看看吧。

类型

位宽

典型的取值范围

char

8

-128 到 127

unsigned char

8

0 到 255

signed char

8

-128 到 127

int

32

-2147483648 

 

到 2147483647

unsigned int

32

 

到 4294967295

signed int

32

-2147483648 

 

到 2147483647

short int

16

-32768 到 32767

unsigned short int

16

0 到 65535

signed short int

16

-32768 到 32767

long int

32

和 int 的一样

signed long int

32

和 singned int 一样

unsigned long int

32

和 unsigned int 一样

float

32

1.8E-38 到 3.4E+38

double

32

2.2E-308 到 1.8E+308

long double 

64

2.2E-308 到 1.8E+308

bool

N/A

true 或者 false

wchat_t

16

0 到 65535

 

 

 

 表格 2-2 在 32 位环境下 C++中数据类型的典型的位宽和取值范围
整型数
    正如我们在第一篇中所学习到的那样,int 类型的变量存储的是不需要小数部分的整型
数。这种类型的变量通常被用来做 for 循环的控制变量以及用于条件语句中,还有就是用