C++ Primer Plus第三章复习题

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

答:为了根据特定需求选择最合适的类型。

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

a.short整数,只为80

b.unsigned int整数,值为42110

c.值为3000000000的整数

答:

short rbis = 80;
unsigned int q = 42110;
unsigned long ants = 3000000000;
or long long ants = 3000000000;
//注意,不要指望int变量能够存储3000000000,另外,如果系统支持通用的列表初始化,可以这样。
shrot rbis = {80};
unsigned int q {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码的系统上,第一条语句才将得分设置为字母A,而第二条语句还可用于使用其他编码的系统。其次,65是一个int常量,而'A'是一个char常量。

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

答:

char c = 88;
cout << c << endl;
cout.put(char(88));
cout << char(88) << endl;
cout << (char)88 << endl;

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

答:

这取决于这两个类型的长度。如果long为4个字节,则没有损失。因为最大的long的值是20亿。由于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

答:

8*9+2=74

6*3/4=4

3/4*6=0

6.0*3/4=4.5

15%4=3 

 仔细想想

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

答:

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

 其实就是强制转换的两种方式。

int(a);和(int)a;

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

auto cars = 15;
auto iou = 150.37f;
auto level = 'B';
auto crat = 'U'/U00002155;
auto fract = 8.25f/2.5;

答:

auto cars = 15;//int类型
auto iou = 150.37f;//float类型
auto level = 'B';//char类型
auto crat = 'U'/U00002155;//char32_t
auto fract = 8.25f/2.5;//double类型

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值