您的当前位置:首页正文

C++ Primer第三章习题答案

2024-11-30 来源:个人技术集锦

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

不同的整型,其占有的内存空间不足,从小到大依次是short、char、int、long、long long。可以针对不同的环境下使用不同的整型,其中,char一般用于表示单个字符,至于输出数字还是字符,是有存储类型决定,如果是int,则输出数字,否则输出字符。

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

a. short整数,值为80
b. unsigned int 整数,值为41120
c. 值为3000000000的整数

short a = 80;
unsigned int = 41120
unsigned int = 3000000000;

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

提供多种数据类型与有无符号两种措施,其中long long数据类型所表示的数据范围远大于int类型,如果一个整数是无符号的,那么可以通过unsigned修饰,表示的数字也会更大,因为默认情况下,数据类型是带符号的,所以需要unsigned进行修饰。

4、33L与33之间有什么区别?

33L表示long类型,而33表示int类型,不同的数据类型,其占有的内存空间不同。

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

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

等价,因为字母A的ASCII编码是65,而他们的数据类型都是char,所以可以这种表示,同时也说明,char是int整形的另一种表示形式。

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

第一种可以通过使用char数据类型声明一个变量为88,然后使用cout直接进行输出,就可以得到编码为88的字符

第二种可以通过cout函数,cout,put()函数,该函数将显示一个字符。

第三章可以通过在输出是进行强制数据类型装换。

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

都不会差生误差,只有在大数据类型转化为小数据类型是才会发生舍入误差,其他情况都会发生误差,而long、long long都是整形数据类型,没有小数部分,而float和double数据类型都是小数数据类型,在进行转换的时候,只截取整数部分,小数部分默认为0,所以不会产生误差。

8、下列C++表达式的结果分别是多少?

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

a. 74,因为乘法的优先级比加法的优先级高,所以结果是74
b. 4,根据结合性原则,当同等优先级的运算法作用于同一个操作数时,从左到右依次计算
c. 0,和b同理
d. 4.0,在进行运算时,如果操作数之间数据类型不同,将会自动进行转换,转换原则是,从占有空间小的数据类型转换为占有空间大的数据类型
e. 3,取模运算法,求出余数

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

这两个结果的答案可能不会相同,因为double数据类型转换为int数据类型时,只会截取整数部分,然后进行相加减,而不是四舍五入,所以结果可能不会相同。

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

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

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

显示全文