c++ primer 第五版课后练习题(2.1.1节练习)
练习 2.1:
类型int、long、long long 和 short 的区别是什么?
无符号类型和带符号类型的区别是什么?
float 和 double 的 区别是什么?
答:
类型名称 | 含义 | 最小尺寸 | 备注 |
---|---|---|---|
int | 整型 | 16位 | 一个 int 至少和一个 short 一样大 |
long | 长整型 | 32位 | 一个 long 至少和一个 int 一样大 |
longlong | 长整型 | 64位 | 一个 long long 至少和一个 long 一样大 |
short | 整型 | 16位 | 一个int至少和一个short一样大 |
带符号类型和无符号类型的区别
除了布尔类型
和扩展的字符型之外,其他整型可以区分为带符号的(signed)
和无符号的(unsigned)
。
类型名称 | 备注 |
---|---|
无符号 | 仅能表示大于、等于0的值 |
带符号 | 可以表示正数,0,负数 |
像类型int
、short
、long
和 long long
均是带符号的。在类型名前面加上unsigned
关键字,即可得到无符号类型,如 unsigned int
即无符号int类型,表示的范围为 0 ~ 65535(2的16次方)。
需要特别注意的是,字符型(书里描述字符型也算是整型)被分为三种:char
、signed char
、 unsigned char
。char
可能是 signed char
也可能是 unsigned char
,属于哪一种取决于编译器。
float 和 double的区别
类型名称 | 含义 | 最小尺寸 | 备注 |
---|---|---|---|
float | 单精度浮点数 | 6位有效数字 | |
double | 双精度浮点数 | 10位有效数字 |
通常, float
以1
个字来表示,double
以 2
个字来表示。一般来说,float
有7
个有效位,double
有16
个有效位。
执行浮点数运算选用 double
,因为 float
通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。甚至在某些机器上,双精度运算比单精度还快。
练习 2.2: 计算按揭贷款时,对于利率、本金和付款分别应选择何种数据类型?
使用double类型。理由如下:
执行浮点数运算选用 double
,因为 float
通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。甚至在某些机器上,双精度运算比单精度还快。