《C++ Primer Plus》 – 第三章
一. 复习题
1.为什么C++有多种整型?
根据特殊需求选择不同占用空间、最合适的类型。
2.声明与下述描述相符的变量。
a.short整数,值为80
b.unsigned int整数,值为42110
c.值为3000000000的整数
short int a = 80;
unsigned int b = 42110;
long long c = 3000000000;
c 超出了long的范围
3.C++提供了什么措施来防止超出整型的范围?
C++没有提供自动防止超出整型限制的功能,可以使用头文件climits来确定限制情况链接:
4. 33L与33之间有什么区别?
33是int类型,33L是long类型
5. 下面两条C++语句是否等价?
char grade = 65;
char grade = 'A';
等价
6. 如何使用C++来找出编码88表示的字符?指出至少两种方法。
打印字符肯定是char类型,所以把88强制转换成char再打印。
char a = 88;cout<< a <<endl;
cout<<char(88);
cout<<(char)88;
cout.put(char(88));
上图第一个是把a转换成int再+1,输出是89。第二个用了put()输出字符,输出是Y。
7.将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?
不同的平台和编译器对应的long和long long 类型的大小是不同的,如果long长度为4个字节,则存放在double类型中不会出现舍入误差,如果long long类型为8个字节,则存放在double类型中会出现舍入误差。
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呢?
int ans = int(x1) + int(x2);
int ans = (int)x1 + (int)x2;
-----------------------------
int ans = int(x1 + x2);
int ans = (int)(x1+x2);
10.下面每条语句声明的变量都是什么类型?
a:int
b:float
c:char
d:char32
e:double