C++的算数类型:整数、浮点数、单个字符、和布尔值,还定义了特殊类型:void。算数类型的存储空间依机器而定。C++标准规定了每个算数类型的最小存储空间。
C++:算数类型
类型 | 含义 | 最小存储空间 |
---|---|---|
bool | 布尔型 | —— |
char | 字符型 | 8位 |
wchar_t | 宽字符型 | 16位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
float | 单精度浮点型 | 6为有效数字 |
double | 双精度浮点型 | 10为有效数字 |
long double | 扩展精度浮点型 | 10为有效数字 |
整数、字符和布尔值的算数类型合称为整型。
字符型:char和wchar_t。char用于存储基本字符,通常是单个及其字节;wchar_t由于扩展字符集,则用多于一个字节表示。
short类型为半个机器字(word)长,而long类型为一个或两个机器字长(在32位机器中的int型和long类型通常字长是相同的)。
bool类型表示真值true和false。可以将算数类型的任何职赋给bool对象。0值算数型代表false,任何非0值都代表true。
- 带符号和无符号类型
除bool整形可以带符号(signed)和无符号(unsigned)。对于unsigned来说,负数总是超出其取值范围。 但将负数赋给unsigned是合法的。其结果是该负数对该类型的取值个数求模后的值。
这个是不被移植的。没必要解释和理解。 按照数学的模定义,a=b*c+d,b>d>0就是模,也就是说负数的模也将是正数,负数对负数的模还是正数,这实际上就要求a-b*c>0,这个等式对于任意的a和b而言,取适当的c即可解。 但是有些程序员总有一些奇怪的想法,比如-1%2,,并且希望模会是负数,-1%-2时又希望是正数,简而言之,就是希望除法的规则延续到求模运算,但是如果把模规定为正负,a-b*c=d就会出现两个解,这样就更麻烦了。所以如果你的模运算出现了负数,那你就得怀疑这个模是否和你希望的定义一致,或者说,根本不用负数参与求模。 |
关于负数的求模运算:请看http://blog.csdn.net/sonydvd123/article/details/8241666
2. 浮点型
一般float类型用一个字(32为)表示,double类型用两个字(64位)表示,long double类型用三个或四个字(96或128)来表示。
对与实际的类型来说,float类型精度通常是不够的——float型只能保证6位有效数字,而double型至少保证10位有效数字,能满足大多数计算的需要。