C++ Primer第五版_第四章习题答案(31~38)
创始人
2025-06-01 04:44:28
0

文章目录

      • 练习4.31
      • 练习4.32
      • 练习4.33
      • 练习4.34
      • 练习4.35
      • 练习4.36
      • 练习4.37
      • 练习4.38

练习4.31

本节的程序使用了前置版本的递增运算符和递减运算符,解释为什么要用前置版本而不用后置版本。要想使用后置版本的递增递减运算符需要做哪些改动?使用后置版本重写本节的程序。

在4.5节(132页)已经说过了,除非必须,否则不用递增递减运算符的后置版本。在这里要使用后者版本的递增递减运算符不需要任何改动。

练习4.32

解释下面这个循环的含义。

constexpr int size = 5;
int ia[size] = { 1, 2, 3, 4, 5 };
for (int *ptr = ia, ix = 0;ix != size && ptr != ia+size;++ix, ++ptr) { /* ... */ }

这个循环在遍历数组 ia,指针 ptr 和 整型 ix 都是起到一个循环计数的功能。

练习4.33

根据4.12节中的表说明下面这条表达式的含义。

someValue ? ++x, ++y : --x, --y

逗号表达式的优先级是最低的。因此这条表达式也等于:

(someValue ? ++x, ++y : --x), --y

如果 someValue的值为真,x 和 y 的值都自增并返回 y 值,然后丢弃 y 值,y递减并返回 y 值。如果 someValue的值为假,x 递减并返回 x 值,然后丢弃 x 值,y递减并返回 y 值。

练习4.34

根据本节给出的变量定义,说明在下面的表达式中将发生什么样的类型转换:

(a) if (fval)
(b) dval = fval + ival;
(c) dval + ival * cval;

需要注意每种运算符遵循的是左结合律还是右结合律。

  • (a) fval 转换为 bool 类型
  • (b) ival 转换为 float ,相加的结果转换为 double
  • © cval 转换为 int,然后相乘的结果转换为 double

练习4.35

假设有如下的定义:

char cval;
int ival;
unsigned int ui;
float fval;
double dval;

请回答在下面的表达式中发生了隐式类型转换吗?如果有,指出来。

(a) cval = 'a' + 3;
(b) fval = ui - ival * 1.0;
(c) dval = ui * fval;
(d) cval = ival + fval + dval;
  • (a) ‘a’ 转换为 int ,然后与 3 相加的结果转换为 char
  • (b) ival 转换为 double,ui 转换为 double,结果转换为 float
  • © ui 转换为 float,结果转换为 double
  • (d) ival 转换为 float,与fval相加后的结果转换为 double,最后的结果转换为char

练习4.36

假设 i 是int类型,d 是double类型,书写表达式 i*=d 使其执行整数类型的乘法而非浮点类型的乘法。

i *= static_cast(d);

练习4.37

用命名的强制类型转换改写下列旧式的转换语句。

int i; double d; const string *ps; char *pc; void *pv;
(a) pv = (void*)ps;
(b) i = int(*pc);
(c) pv = &d;
(d) pc = (char*)pv;
  • (a) pv = static_cast(const_cast(ps));
  • (b) i = static_cast(*pc);
  • © pv = static_cast(&d);
  • (d) pc = static_cast(pv);

练习4.38

说明下面这条表达式的含义。

double slope = static_cast(j/i);

j/i 的结果值转换为 double,然后赋值给slope。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...