C++ Primer Plus学习随记(第三章复习题)

3.6 复习题

1.为什么C++有多种整型?

答案:有多种整型类型,可以根据特定需求选择最合适的类型。例如,可以使用short来存储空格,使用long来确保存储容量,也可以寻找可提高特定计算的速度的类型。

2.声明与下述描述相符的变量。

a.short整数,值为80

b.unsigned int整数,值为42110

c.值为30000000000的整数

答案:

 unsigned int q = 42110; // or unsigned q = 42110;
 unsigned long ants = 3000000000;
 // or long long ants = 3000000000;

注意:不要指望int变量能够存储3000000000;另外,如果系统支持通用的列表初始化,可使用它:
 

short rbis = {80};         // = is optional
unsigned int q {42110};  // could use = {42110}
long long ants {3000000000};

3.C++提供了什么措施来防止超出整型的范围?

答案:C++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制情况。

4.33L与33之间有什么区别?

答案:常量33L的类型为long,常量33的类型为int。

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

char grade = 65;
char grade = 'A';

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

6.如何使用C++来找出编码88表示的字符?指出至少两种方法。

答案:
下面是4种方式:
 

char c = 88;
cout << c << endl;         // char type prints as character
cout.put(char(88));        // put() prints char as character
cout << char(88) << endl;  // new-style type cast value to char
cout << (char)88 << endl;  // old-style type cast value to char

7.将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?将long long值赋给double变量呢?

答案:这个问题的答案取决于这两个类型的长度。如果long为4个字节,则没有损失。因为最大的long值将是20亿,即有10位数。由于double提供了至少13位有效数字,因而不需要进行任何舍入。long long类型可提供19位有效数字,超过了double保证的13位有效数字。

8.下列C++表达式的结果分别是什么?

a. 8 * 9 + 2
b. 6 * 3 / 4
c. 3 / 4 * 6
d. 6.0 * 3 / 4
e. 15 % 4

答案:

a. 8 * 9 + 2 is 72 + 2 is 74
b.6 * 3 / 4 is 18 / 4 is 4
c.3 / 4 * 6 is 0 * 6 is 0
d.6.0 * 3 / 4 is 18.0 / 4 is 4.5
e.15 % 4 is 3

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

答案:
下面的代码都可用于完成第一项任务:

int pos = (int) x1 + (int) x2;
int pos = int(x1) + int(x2);

要将它们作为double类型相加,再进行转换,可采取下述方式之一:

int pos = (int) (x1 + x2);
int pos = int(x1 + x2);

10.下面每条语句声明的变量都是什么类型?

a. auto cars = 15;
b. auto iou = 150.37f;
c. auto level = 'B';
d. auto crat = U'/U00002155';
e. auto fract = 8.25f/2.5;

答案:

a.int
b.float
c.char
d.char32_t
e.double

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值