- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++Primer第五版第四章习题答案
书籍版本:2019年9⽉第⼀版;王刚 杨巨峰译;电⼦⼯业出版社
编译器 : win10 VS2015
4.1
5+10*20/2 = 5 + ((10 * 20)/ 2) = 105
4.2
*vec.begin() = *(vec.begin);
*vec.begin() + 1= (*(vec.begin) ) + 1;
4.3
有四种运算符明确定义了求值顺序,包括: || ?: ,
其余的没有明确求值顺序其实我觉得不太好,因为这就将计算结果的决定权交给了编译器的定义者⽽不是真正的开发者,但是求值顺序太多
了,真正想要全部定义或者定义⼀个万能的也不太可能,所以还是要开发者⾃⾝多注意求值的运算符的使⽤。
4.4
12/3*4+5*15+24%4/2 = 91;
#include stdafx.h
#include iostream
#include string
#include vector
using namespace std;
int main()
{
cout 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2 endl;
system(pause);
return 0;
}
4.5
a. -30*3+21/5 = -86 或者-85.8
b. -30+3*21/5 = -18
c. 30/3*21%5 = 0
d. -30/3*21%4 = -2
这个题其实我觉得有点表述不明,题⽬只说写出这些表达式的求值结果,但并没有说清楚返回值类型,返回值类型不同返回值不同,暂且看
做int型返回值吧。
4.6
int num;
if(num%2) {cout偶数 “endl;}
else{cout奇数“endl;}
4.7
要表⽰的数据值超出数据类型的值域范围时,就是溢出。
short a = 32768;
unsigned a = -10;
int a = 123456789*123456789
4.8
逻辑与:左⾯为真再判断右⾯
逻辑或:先判断左⾯为假再判断右⾯
相等性运算符:右边的转换为左边的类型再与左边⽐较
4.9
cp不为空并且cp⾸位不为空
4.10
int num;
while(cinnum num != 42)
{};
4.11
a b b c c d
4.12
这个表达式等于 i != (j k)。⾸先得到 j k 的结果为 true 或 false,转换为整数值是 1 和 0,然后判断 i 不等于 1 和 0 ,最终的结果为
bool 值。
4.13
a. d = 3.00,i=3;
b. d = 3.5,i =3;
4.14
if(42=i) 报错
if(i=42) 将i赋值为42;
4.15
⽆法将指针赋值给int型变量;
4.16
a. 不等于优先级⾼于赋值,应改为:if((p = getPtr()) != 0)
b. 这样写并不是判断i与1024是否相等,⽽是将1024赋值给了i,应改为:if(i == 1024)
4.17
前置递增运算符先进⾏递增运算,然后返回的是递增之后的值
后置递增运算符先调⽤当前值,之后对当前值进⾏递增运算
4.18
使⽤前置递增运算符会导致向量中的第⼀个元素没有被输出;并且最后对 v.end() 进⾏取值,结果是未定义的。
4.19
a. ptr不为空并且ptr所指向的对象的值也不为空
b.表达式错误,会先对ival进⾏⾃增运算,之后判断⾃增之后的ival是否为空,正确的写法应先判断ival是否为空之后再++
c.没有意义,恒成⽴。相当于:vec[ival] = vec[ival]; ival++;
4.20
直接输出题⽬给出的值会有问题,最好先给iter赋初值,我将iter赋值为了对应的vector的begin;
a.⾸先对iter解引⽤,然后让iter++指向下⼀个位置
b.不合法,(*iter)对iter解引⽤后得到的值是string类型,⽆法进⾏++操作
c.不合法,解引⽤云算法优先级低于点运算符,所以相当于*(iter.empty()),但是iter是指针,不能使⽤点运算符
d.返回值为iter所指向的值是否为空
e.不合法,相当于++(*iter),但是*iter之后的值
您可能关注的文档
最近下载
- QB_T 4563-2013金砂糖.pdf
- 大坝安全监测系统运检导则(试行) QGDW 46 10022.24-2020.docx VIP
- 第五单元 一方水土养一方人 达标训练(含答案) 浙江省人教版七年级人文地理下册.docx
- 奋进新征程建功新时代PPT模板.ppt VIP
- 规范《GB712-88-船体用结构钢》.pdf
- 二年级上册语文教学设计21《狐假虎威》一等奖 刘芳 部编版.docx VIP
- Q_GDW 46 10022.25-2020 通风空调系统运检导则.docx
- 12如何帮助学生学会正确地与异性同学交往?.docx VIP
- 专题1.2 数轴与动点经典题型(四大题型)(原卷版).docx VIP
- 拉森钢板桩专项施工方案.doc
文档评论(0)