- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++Primer (第五版)课后习题 Unit4
4.1.2节练习
练习4.1
5+10*20/2 = 105
练习4.2
需要在加完括号后运算顺序和加括号前⼀样⼀样
a)* vec.begin() *(vec.begin())
b)*vec.begin()+1 (*(vec.begin()))+1
4.1.3节练习
练习4.3
可以接受。如果把运算符求值顺序明确规定,必然会影响程序的效率。但是也有⼀些潜在的影响,但是⼤多数的时候程序并不会被这种潜在
问题影响,所以只需要在需要的时候,对其进⾏优化。C++是尽可能相信程序员
4.2节练习
练习4.4
12/3*4+5*15+24%4/2 = (12/3*4)+(5*15)+(24%4/2)=16+75+0=91
练习4.6
(a%2==0)? :
练习4.7
溢出:因为计算机⾥存取数值都是有位数限制的,有位数限制就会有⼤⼩上下限的限制。如果超过了⼀个数字的上限,那么就会发⽣溢出。
如果⽐能表⽰的最⼩值还要⼩,就会发⽣溢出。
⽐如:
unsigned char x=0xff;
x++;
int a=INT_MAX;
a++;
coutaendl;
int b=INT_MIN;
b--;
coutbendl;
练习4.8
逻辑与,当且仅当左侧为真时,才对右侧进⾏判断
逻辑或,当且仅当左侧为假时,才对右侧进⾏判断
相等性运算,并未定义求值顺序。不过我试着⽤⼀个程序来检测是先运⾏左边还是右边:
int i=0;
int j=1;
if(i++==(j==i))
coutgood;
else
coutbad;
//bad
if((j==i)==i++)
coutgood;
else
coutbad;
//good
这个程序说明了我的这个编译器会先执⾏等号右侧的,然后再执⾏等号左侧的算式。当然不论先执⾏哪边,通常情况下都不会影响最终的结
果,⽽且这个式⼦,最好不要因为执⾏等号两边的顺序不同,⽽产⽣不同的结果。
练习4.9
const char *cp = Hello World;
if(cp *cp)
条件部分判断当cp不为空指针时,再去判断这个字符串是否为空串。如果不为空串,则会返回1
练习4.10
#include iostream
using std::cin;
using std::cout;
int main() {
int i=0;
while((cini)(i!=42)){
coutok\n;
}
return 0;
}
练习4.11
if(abbccd)
if(abcd)//这个写法好像也可以通过编译
练习4.12
i!=jk
该表达式先计算jk,然后将判断结果⽤于和i⽐较,如果判断结果为真,则⽐较看i是否为1,否则看i是否为0。先计算等号后⾯的。
i=1;
j=0;
k=0;//如果先计算i!=j,然后⽤这个结果计算⼩于k,则判断错误,输出22 ,否则要是先计算jK ,判断正确,返回11
if(i!=jk){
cout11;
}
else
cout22;
总结:
关于⽐较运算符的前后顺序:
int i=2;
int j=2;
int k=2;
int o=3;
if(ijko){// 通过数字2223检查⽐较时是左结合还是右结合。如果为真,说明是左结合,如果条件为假,说明是右结合
cou
}
关于⽐较运算符,应该是左结合
关于带不等号的⽐较符的前后顺序
i=1;
j=0;
k=0;//如果先计算i!=j,然后⽤这个结果计算⼩于k,则判断错误,输出22 ,否则要是先计算jK ,判断正确,返回11
if(i!=jk){
cout11;
}
else
cout22;
还有等号的⽐较符的前后顺序:
int i=0;
int j=1;
您可能关注的文档
最近下载
- 零食店的劳务合同7篇.docx VIP
- 工程技术核定单模板.pdf VIP
- 2025年全国中学生英语能力竞赛高二年级组初赛试题.doc VIP
- 物业客服面试题及答案.doc VIP
- 医学科研中不同研究方法的比较与选择.pptx VIP
- 七年级数学上册-难点探究:数轴上的动点问题压轴题六种模型全攻略(解析版).pdf VIP
- DB35T 1471-2014热熔胶喷(涂)机械通用技术条件.docx VIP
- 护理科研论文写作常见问题及解决策略.pptx VIP
- 新概念英语第一册Lesson27-28 教学课件.pptx VIP
- 河南省南阳市九师联盟2025-2026学年高二上学期期中考数学 Word版含解析.docx VIP
原创力文档


文档评论(0)