黑马程序员技术交流社区
标题:
求值
[打印本页]
作者:
pojian
时间:
2016-3-13 10:59
标题:
求值
设 int a=12,则执行完语句a+=a-=a*a后,a的值是________
A) 552 B) 264 C) 144 D) -264
作者:
我本善良。
时间:
2016-3-13 16:12
是选择C吗 好像就他符合啊
作者:
我本善良。
时间:
2016-3-13 16:15
我运行了一下是 -120呀
作者:
叫我超哥
时间:
2016-3-13 16:57
算了下,d
作者:
阿云
时间:
2016-3-15 12:14
结果不是120么
作者:
地球人
时间:
2016-3-15 13:38
步骤应该是a*a=144; a+=a及a=a+a=24; 然后是-=及a=a-144=24-144=-120
作者:
地球人
时间:
2016-3-15 13:40
步骤为 a*a=144;然后+=及a=a+a=12+12=24,然后-=及a=a-144=24-144=-120
作者:
Banana_uSuOO
时间:
2016-3-15 14:08
从又往左看:a-=a**即a=a-a*a运行完后a=-132,再看左边,此时变为a+=-132,即a=a+(-132),,-132+-132=-264,菜鸟新人分析,不知道对不对。
作者:
lgdbest
时间:
2016-3-20 13:06
我算了一下 是-120,运行也是。。。没有正确答案了,好坑啊
作者:
lvlup200
时间:
2016-3-21 15:30
// 第一步,执行a*a,因为*优先级高于-=扩展运算符
// 第二步,执行a-=144(a*a的值)
// 第三步,执行a+=-132,但这里的参与到计算时总是保持值为12,为什么?
// a+=a-=a*a;执行类似于以下步骤
/*
* int k = a * a;
* int l = a - k;
* a = a + l;
*/
//直到最后才真正赋值到变量a中
复制代码
作者:
wxf468907066
时间:
2016-3-21 21:08
运算符的优先级: * 大于 +=和-=,从右算过去就是-120
作者:
xiaochenu
时间:
2016-3-22 11:35
是-120.呀,先算乘,再从左到右
作者:
Poul
时间:
2016-3-22 13:45
a+=a-=a*a是不是等价于a=a+(a-a*a)?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2