C++面向对象程序设计习题解析与解答
版权申诉
160 浏览量
更新于2024-07-07
收藏 42KB PDF 举报
"VC++面向对象程序设计的相关课后习题答案"
在面向对象程序设计中,C++语言的表达式赋值、运算符优先级和结合性是基础且重要的概念。以下是对题目中涉及的知识点的详细解释:
1. 赋值表达式合法性:
- (1) a=b=4.5+7.8 是合法的,虽然4.5+7.8是浮点数,但C++允许将浮点数赋值给整型变量,会进行类型转换。
- (2) c=3.5+4.5=x=y=7.9 不合法,因为4.5是一个常量表达式,不能作为左值(即不能被赋值)。
- (3) x=(y=4.5)*45 是合法的,先执行y=4.5,然后计算乘法并赋值给x。
- (4) e=x>y 不合法,因为比较运算符(如>)不返回左值,不能用于赋值。
2. 表达式运算后的a值:
- (1) a+=a 等价于 a=a+a,a的值变为20。
- (2) a%=(7%2) 等价于 a=a%(7%2),7%2等于1,因此a的值变为0。
- (3) a*=3+4 等价于 a=a*(3+4),a的值变为70。
- (4) a/=a+a 等价于 a=a/(a+a),a的值变为10/20,即0。
- (5) a-=a 等价于 a=a-a,a的值变为0。
- (6) a+=a-=a*a 等价于 a=a-a*a,然后a=a+a,a的值变为0。
3. 逻辑表达式求值:
- (1) a+b>c&&b==c 的值为 F,因为7>5是真,4==5是假,且&&运算符具有短路特性,当左侧为假时右侧不计算。
- (2) a||b+c&&b>c 的值为 F,因为3||9是真,但4>5是假,&&运算符短路,整个表达式为假。
- (3) !a||!c||b 的值为 T,因为!15(即!a)为假,!19(即!c)也为假,但4(即b)为真,||运算符至少有一个为真则结果为真。
- (4) a*b&&c+a 的值为 T,因为15*8(即a*b)为真,13+8(即c+a)也为真,&&运算符两侧都为真则结果为真。
4. 自增自减运算符:
- (1) a=m+++n++ 的结果是18,m先加1变为11,n先加1变为9,然后a等于10+9。
- (2) b=m+++++n 的结果是19,m先加1变为11,然后n再加1变为9,最后b等于10+9。
- (3) c=++m+++n 的结果是20,m先加1变为11,然后n再加1变为9,最后c等于11+9。
- (4) d=m--+n++ 的结果是18,m先减1变为9,然后n再加1变为9,最后d等于10+9。
5. 元组赋值与逗号运算符:
- (1) y=(a+b,c+a) 的结果是14,元组赋值右边先计算13(a+b),然后计算14(c+a),最后y取最后一个值14。
- (2) x=y=a, z=a+b 的结果是x=5, y=5, z=13,y先等于a的值5,然后x也等于5,z等于a+b的值13。
- (3) y=(x=a*b,x+x,x*x) 的结果是1600,x先等于a*b的值40,然后y等于x*x的值1600。
- (4) x=(y=a,z=a+b) 的结果是13,y先等于a的值5,z等于a+b的值13,x取最后一个值13。
6. 条件运算符(三目运算符):
- (1) x=a<b||c++ 的结果是T,a<b是真,条件运算符短路,c++后c变为19。
- (2) y=a>b&&c++ 的结果是F,a>b是假,条件运算符不再计算右侧,c++后c仍为19。
- (3) x=a+b>c&&c++ 的结果是T,a+b>c是真,c++后c变为20。
这些题目涵盖了C++中的基本运算符、表达式求值规则、自增自减运算符、逻辑运算符、逗号运算符以及条件运算符的用法。理解这些基础知识对于编写和调试C++代码至关重要。
112 浏览量
2022-01-02 上传
2021-12-10 上传
2021-12-14 上传
2022-07-14 上传
2021-10-06 上传
csh18750931974
- 粉丝: 0
- 资源: 8万+
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫