欢迎光临散文网 会员登陆 & 注册

C++ Primer Plus 第三章复习题答案

2021-12-13 15:25 作者:狱雷Guru  | 我要投稿

3.6 复习题

  1. 以满足各种开发的需要

  2.  a. int i = 80; b. unsigned int i = 42110; long i = 3000000000; 

  3. 自动类型转换

  4. 33L是long型 33 应该是int 型

  5. 等价


  6. char i = 88;

    cout<< i<<endl;

    或者

    int i = 88;

    printf("%c",i);

  7. 将long赋值给double应该不会出现误差,long long变量赋给double变量也会有舍入误差。

  8.  74   4   0   4.5   3

  9. int i = (int)x1+(int)x2;

    int i = int(x1+x2);


  10. int float char char_32t double

鲁班七号:

  1. 目的是为了满足不同的计算需求。比如某小学某个班的学生数一般用 short 或者更精确地说是 unsigned short 即可(视具体的系统而定)、而某大学的师生个数一般用 int 或者更精确地说用 unsigned int 即可(视具体的系统而定)、而目前的中国人口数则需要用 long 或者更精确地说用 unsigned long、而目前的全球人口数则必须得使用 long long 或者更精确地说是 unsigned long long。更具体的可参见C/C++中各种类型int、long long、double表示范围(最大最小值)。

  2. a) short Value=80; b) unsigned int Value=42110; c) long long Value=3000000000; 或 unsigned long Value=3000000000;(建议使用这个)

  3. C++本身并不能限制某个类型是否超出了它类型的范围,但是可以用 limits 头文件来看某种类型具体的范围。可参见问题 1 中列出的连接。

  4. 常量 33L 实际上等价于 long Value=33,而常量 33 则等价于 int Value=33。

  5. 并不等价,得视系统而定,如果是使用ASCII码的系统则是一样的,但在某些系统中可能不一样。并且常量 65 是 int 型的,而 ‘A’ 是 char 类型的。

  6. char c = 88; cout << c << endl; cout.put(char(88))<<endl; cout << char(88) << endl; cout << (char)88 << endl;也就是说可以使用直接输出,cout.put()函数,或者强制转换的方式。

  7. 这种情况也还是得视系统而定,也就是说取决于两种类型的长度。如果 long 为 4 个字节,则没有损失,因为占 4 个字节的 long 的最大值为 2147483647,即有十位数,而 double 提供了至少十三位有效数字,这种情况下没有舍入误差。但是 long long 类型提供了 19 位数字,这超过了 double 的有效位数,故这种情况下有舍入误差。

  8. a) 74, b) 4, c) 0, d) 4.5, e) 3。

  9. 用C风格的代码可以写为:int Result=(int)x1+(int)x2; C++风格的则可以写为:int Result=int(x1)+int(x2); 第二种情况类似,如下:int Result=(int)(x1+x2); 或者int Result=int(x1+x2);

  10. a) int, b) float, c) char, d) char32_t, e) double。


C++ Primer Plus 第三章复习题答案的评论 (共 条)

分享到微博请遵守国家法律