C++Primer学习笔记(一) 内置数据类型
类型 含义 最小存储空间
bool boolean NA
char character 8 bits -128 ~ 127
wchar_t wide character 16 bits -32,768 ~ 32,767
short short integer 16 bits -32,768 ~ 32,767
int integer 32 bits -2,147,483,648 ~ 2,147,483,647
long long integer 32 bits -2,147,483,648 ~ 2,147,483,647
long long long integer 64 bits
float single-precision floating-point 32 bits 6 significant digits
double double-precision floating-point 64 bits 10 significant digits
long double extended-precision floating-point 128 bits 10 significant digits
整型字面值规则: 整数常量的类型默认为 int, 以 0(零)开头的字面值整数常量表示八进制,以 0x 或 0X 开头的表示十六进制。
通过增加后缀,能够强制将字面值整数常量转换为 long、unsigned 或 unsigned long类型。通过在数值后面加 L 指定常量为 long 类, LL指定常量为 long long 类, UL指定常量为 unsigned long 类
型。
20 // decimal
024 // octal
0x14 // hexadecimal
C++ 的内置类型与其在计算机的存储器中的表示方式紧密相关。计算机以位序列存储数据,每一位存储 0 或 1。
大部分计算机都使用特定位数的块来处理存储,块的位数一般是 2 的幂,因为这样可
以一次处理 8、16 或 32 位。64 和 128 位的块如今也变得更为普遍。
虽然确切的大小因机器不同而不同,但是通常将 8 位的块作为一个字节,32 位或 4 个字节作为一个“字(word)”
大多数计算机将存储器中的每一个字节和一个称为地址的数关联起来。
整型 int、short 和 long 都默认为带符号型。要获得无符号型则必须指定该类型为 unsigned,比如 unsigned long。
默认的浮点字面值常量为 double 类型。在数值的后面加上 F 或 f 表示单精度。同样加上 L 或者 l 表示扩展精度
如果把 -1 赋给8 位的 unsigned char,那么结果是 255
当执行整型算术运算时,很少使用 short 类型。大多数程序中,使用short 类型可能会隐含赋值越界的错误。这个错误会产生什么后果将取决于所使用的机器。比较典型的情况是值“截断(wrap around)”以至于因越界而变成很大的负数。
在大多数机器上,使用 int 类型进行整型计算不易出错。就技术上而言,int 类型用 16 位表示——这对大多数应用来说太小了。实际应用中,大多数通用机器都是使用和 long 类型一样长的 32 位来表示 int 类型。
决定使用哪种浮点型就容易多了:使用 double 类型基本上不会有错。在 float 类型中隐式的精度损失是不能忽视的,而 double 类型精度代价相对于 float 类型精度代价可以忽略。事实上,有些机器上,double类型比 float 类型的计算要快得多。long double 类型提供的精度通常没有必要,而且还需要承担额外的运行代价。