为了账号安全,请及时绑定邮箱和手机立即绑定

44、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是

44、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是

C
包小龙虾 2018-08-19 16:22:17
44、设 int a=12,则执行完语句 a+=a-=a*a后,a的值是 A) 552 B) 264 C) 144 D) -264
查看完整描述

2 回答

?
onemoo

TA贡献883条经验 获得超454个赞

又是一道烂题!  要是在面试中,你可以告诉面试官此语句的结果是未定义的。

+=   -= 这样的复合赋值运算符的副作用只能确定是在其值计算之后,但是左右侧操作数哪个先求值却是不确定的,所以整个表达式的结果是未定义的。

查看完整回答
反对 回复 2018-08-20
  • 包小龙虾
    包小龙虾
    哎,这题库好多题目都不严谨,如果就按这题目的意思来的话是这样吗?1.a*a=144 2.a=a-a*a=-132 3.a+=a 即:a=a+a=-264
  • onemoo
    onemoo
    反推的话,应该是这样吧。唉...
  • 包小龙虾
    包小龙虾
    好吧,谢谢大神
?
qq_苦笑释怀_0

TA贡献6条经验 获得超2个赞

https://img1.sycdn.imooc.com//5b7a4cd50001715b01960136.jpg

根据代码执行来看结果应该是-120
a+=a-=a*a ==> a+(a-a*a)
此题应该牵扯到了值类型和引用类型的定义


查看完整回答
1 反对 回复 2018-08-20
  • 2 回答
  • 0 关注
  • 6148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信