(四十三)作业题

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

答:因为不同整型适用于不同的情况,更小的整型可以占用更少的内存,更大的整型可以显示更大的值,其中bool可以用于显示true和false,char可以存储字符的数值编码,int比short显示的范围更大,long和long long则更大。unsigned整型可以不显示负数,在同样的内存可以显示更大的数字,而signed整型可以确保能显示负数。

 

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

a.short整数,值为80;

b.unsigned int整数,值为42110;

c.值为3 000 000 000的整数。

答:short a=80;unsigned int b=42110; unsigned long c =3e9;

 

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

答:static_整型 变量; 

正确答案:c++没有提供自动防止超出范围的功能,可以用头文件climit来确认限制情况。

 

4.33L和33有什么区别?

33L是将33以浮点类型long double的方式进行存储,而33是存储为整型int格式。前者是浮点数,而后者是整数,在计算时,33L除以11的结果是有小数的,而int是没有小数的。

正确答案:33L是long int,33是int,33.0L是long double

 

 

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

char grade =65;

char grade = 'A';

答:不等价。A的数值编码为65,char grade='A';如果显示当做数值的话,的确为65,但是他实际上是字符A,而char grade=65实际上是值65。

正确答案:没有真正实际等价,虽然对某些系统是等效的。最重要的是,只有在使用ASCII码的系统上,第一条语句才能等于A,但是第二条语句在任何系统上都行。另外,65是int常量,而'A'是一个char常量。

 

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

答:

char a = 88; //方法一

cout << a << endl;

正确答案:

cout.put(char(88)) << endl; //方法二

cout << char(88) << endl; //方法三

cout << (char)88 << endl; //方法四

 

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

答:通常情况下,long值的范围是64位,而double变量的范围是64位,因此将long值赋给double变量不会产生误差。然而long long的变量范围可能的64位,也可能是更多。假如当long long的变量范围为64位时,则不会产生误差,若大于64位,则可能产生误差。

正确答案:主要取决于long和long long的长度,如果long为4个字节(32位)则没有损失,其表示的最大值为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=74,b=4,c=0,d=4.5,e=3

 

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

答:

double x1, x2;

int y1 = x1;

int y2 = x2;

int a = y1 + y2; //完成1

 

double x1, x2;

int a = x1 + x2; //完成2

正确答案:

int a = int(x1) + int(x2); //完成第一个

int a = 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不知道,e为double。


正确答案:d为char32_t——但U'/U00002155'到底是什么……

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值