您的位置:首页 > 编程语言 > C语言/C++

C++ Primer学习笔记:算术类型使用小结

2009-06-26 13:14 585 查看
实际上,许多人用整型进行计数。例如:程序经常计算像
vector
或数组这种数据结构的元素个数。在第三章
第四章
中,我们将看到标准库定义了一组类型用于统计对象的大小。因此,当计数这些元素时使用标准库定义的类型总是正确的。其他情况下,使用
unsigned 类型
比较明智,可以避免值越界导致结果为负数的可能性。

当执行整型算术运算时,很少使用 short
类型。
大多数程序中,使用 short

类型可能会隐含赋值越界的错误。这个错误会产生什么后果将取决于所使用的机器。比较典型的情况是值“截断(wrap
around)”以至于因越界而变成很大的负数。同样的道理,虽然 char
类型是整型,但是 char

类型通常用来存储字符而不用于计算。事实上,在某些应用中 char
类型被当作 signed
类型,在另外一些应用中则被当作
unsigned
类型,因此把 char 类型作为计算类型使用时容易出问题。

在大多数机器上,使用 int
类型进行整型计算不易出错。
就技术上而言,int
类型用 16 位表示——这对大多数应用来说太小了。实际应用中,大多数通用机器都是使用和
long
类型一样长的 32 位来表示 int
类型。整型运算时,用 32 位表示 int
类型和用 64
位表示 long
类型的机器会出现应该选择 int
类型还是 long
类型的难题。在这些机器上,用
long
类型进行计算所付出的运行时
代价远远高于用 int

类型进行同样计算的代价,所以选择类型前要先了解程序的细节并且比较 long
类型与 int

类型的实际运行时性能代价。

决定使用哪种浮点型就容易多了:使用 double
类型基本上不会有错。
在 float
类型中隐式的精度损失是不能忽视的,而 double
类型精度代价相对于
float
类型精度代价可以忽略。事实上,有些机器上,double
类型比 float

类型的计算要快得多。long double
类型提供的精度通常没有必要,而且还需要承担额外的运行代价。

Type
类型
Meaning
含义
Minimum Size
最小存储空间
bool

boolean
NA
char

character
8 bits
wchar_t

wide character
16 bits
short

short integer
16 bits
int

integer
16 bits
long

long integer
32 bits
float

single-precision floating-point
6 significant digits
double

double-precision floating-point
10 significant digits
long double

extended-precision floating-point
10 significant digits
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: