C++ Primer Plus(第六版)第三章复习题答案

1. 为什么C++有多种整型?
有多种整数类型,可以根据特定需求选择合适的类型。例如,可以使用short来存储空格,使用long来确保存储容量,也可以寻找可提高特定计算的速度的类型。

2.声明与下述描述相符的变量。
(1)short整型,值为80
(2)unsigned int整型,值为42110
(3)值为3000000000的整数
(1)short a = 80;
(2)unsigned int b = 42110;
(3)unsigned long c = 3000000000;(有符号的long最大值为2147483000)或者long long c = 3000000000;

3. C++提供了什么措施来防止超出整型的范围?
C++没有提供自动防止超出整型限制的功能(当超出范围之后,得到的值是不确定的),可以使用头文件climits来确定限制情况。

4. 33L与33之间有什么区别?
常量33L的类型为long,常量33的类型为int。

5. 下面两条C++语句是否等价?

char grade = 65;
char grade = ‘A’;

这两条语句并不真正等价,虽然对于某些系统来说,它们是等价的。最重要的是,只有在使用ASCII码的系统上,第一条语句才将得分设置为字母A,而第二条语句还可用于使用其他的编码系统。其次,65是一个int常量,而‘A’是一个char常量。

6. 如何使用C++来找出编码88表示的字符?指出至少两种法。
(1)char c= 88; cout << c << endl;
(2)cout.put(char(88));
(3)cout << char(88) << endl;
(4)cout << (char) 88 << endl;

7. 将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?将long long值赋给double变量呢?
这个问题的答案取决于这两个类型的长度。如果long为4个字节,这没有损失。因为最大的long的值为20亿,即有10位数。由于double提供了至少13位有效数字,因而不需要进行任何舍入。Long long类型可提供19位有效数字,超过了double保证的13位有效数字。

8. 下列C++表达式的结果分别是什么?
(1)8 * 9 + 2;
(2)6 * 3 / 4;
(3)3 / 4 * 6;
(4)6.0 * 3 / 4;
(5)15 % 4;
(1)74;(2)4;(3)0;(4)4.5;(5)3

9. 假设x1和x2是两个double变量,您要将它们作为整数相加,再将结果赋给一个整型变量。请编写一条完成这项任务的C++语句。如果要将它们作为double值相加并转换为int呢?
int a = int(x1) + int(x2);或者int a = (int) x1 + (int) x2;
int a = int(x1 + x2);或者int a = (int) (x1 + x2);

10. 下面每条语句声明的变量都是什么类型?
(1)auto cars = 15;
(2)auto iou = 150.37f;
(3)auto level =‘B’;
(4)auto crat = U‘/U00002155’;
(5)auto fract = ‘8.25f/2.5’;
(1)int;(2)float;(3)char;(4)char32_t;(5)double

猜你喜欢

转载自blog.csdn.net/wyl1813240346/article/details/80260277