A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pojian 中级黑马   /  2016-3-13 10:59  /  1550 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

设 int a=12,则执行完语句a+=a-=a*a后,a的值是________
A) 552        B) 264      C) 144        D) -264

12 个回复

倒序浏览
是选择C吗     好像就他符合啊
回复 使用道具 举报
我运行了一下是 -120呀
回复 使用道具 举报
算了下,d
回复 使用道具 举报
结果不是120么
回复 使用道具 举报
步骤应该是a*a=144;     a+=a及a=a+a=24;    然后是-=及a=a-144=24-144=-120
回复 使用道具 举报
步骤为 a*a=144;然后+=及a=a+a=12+12=24,然后-=及a=a-144=24-144=-120
回复 使用道具 举报
Banana_uSuOO 来自手机 中级黑马 2016-3-15 14:08:29
8#
从又往左看:a-=a**即a=a-a*a运行完后a=-132,再看左边,此时变为a+=-132,即a=a+(-132),,-132+-132=-264,菜鸟新人分析,不知道对不对。来自: iPhone客户端
回复 使用道具 举报
我算了一下 是-120,运行也是。。。没有正确答案了,好坑啊
回复 使用道具 举报
  1. // 第一步,执行a*a,因为*优先级高于-=扩展运算符
  2.                 // 第二步,执行a-=144(a*a的值)
  3.                 // 第三步,执行a+=-132,但这里的参与到计算时总是保持值为12,为什么?
  4.                 // a+=a-=a*a;执行类似于以下步骤
  5.                 /*
  6.                  * int k = a * a;
  7.                  * int l = a - k;
  8.                  * a = a + l;
  9.                  */
  10.                 //直到最后才真正赋值到变量a中
复制代码
回复 使用道具 举报
运算符的优先级:  * 大于 +=和-=,从右算过去就是-120
回复 使用道具 举报
是-120.呀,先算乘,再从左到右
回复 使用道具 举报
Poul 中级黑马 2016-3-22 13:45:15
13#
a+=a-=a*a是不是等价于a=a+(a-a*a)?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马