C++面向对象程序设计习题解析与解答

版权申诉
0 下载量 11 浏览量 更新于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++代码至关重要。