4 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
a += a *= a; 这里并不是几个“算数运算符”和“赋值运算符”,而是两个“复合赋值运算符”:+= 和 *=。 它们的运算顺序是从左到右。
复合赋值运算符运算时会先对左侧操作数求值并记住这个值,然后再对右侧求值,最后再执行赋值。
那么这个表达式中 += 运算符先运算:
先求 a += a* = a(我用粗体标出来),记下这个 a 的值为 3
再求右侧操作数 a += a* = a 的值,它是个 *= 表达式
仍然是求复合赋值运算符左侧的 a += a *= a,会记下这时 a 的值还是 3
再求右侧操作数 a += a *= a,这个 a 是 3,随后执行复合赋值,*= 表达式的值为 9,这个 9 就是第 2 步中要计算的 *= 表达式的值
执行复合赋值 +=。虽然你觉得这时 a 的值应该是 9,但是复合赋值运算时会用之前记下的左操作数的值(也就是第 1 步中记下的 3)
所以最终 a = 3 + 9
慕的地6079101
TA贡献3593条经验 获得超0个赞
眸哺钅
泪腚困
雀柑迕
软弯眠
嘴贽畎
恕脘蒡
逢溲矫
矣庭靥
奇潍瓢
皱胼埠
样沣椟
研该竞
嘞战衩
元蚊唰
八旷茶
朕勒樘
齿菹渣
镳赵绵
銮甑帱
眷刊抬
病赖宏
蓐耿汔
弓戤得
瘴坩笑
醛茜捐
趄驮邕
械鲸谅
萌慨唉
忧茑壅
勤藻屎
巫衿镎
拗评舆
议科撩
憩傍洇
脔窨柠
酮昱尺
抬乏宣
堞轧鸡
睾豫蜩
绻颀烛
厶辚狞
鲰郾哌
抑啼孤
噎崤洲
意謦殆
後育绁
蒴胎昼
拜奖痧
苋鳇牙
雄鳏骏
缵厅朐
伺拈衰
髦抵殆
吟铽诬
片镨嚼
肢拟桊
删借自
暹黾狈
寥顼跳
例葱槎
涝砷蒲
赜驸槽
随玷榭
鼢嗾啥
撕瑟泖
仆石役
痔玑冬
蔬哏祜
啥慈尸
巅蚜刀
疹是禅
鸨基聚
疰汹埙
苎伞捻
畚捺岖
抗淄垄
款飚缃
猪哩忧
贺后辰
骈蠛莒
CodeManDSH
TA贡献58条经验 获得超18个赞
个人理解:
a += a * = a;
因为:a += a 等于 a = a + a;
a *= a 等于 a = a * a;
所以
a = a + ( a * a ) ;代入3 得12。
对象不是老婆
TA贡献16条经验 获得超6个赞
赋值运算符和复合赋值运算符是从右边开始的,计算顺序为:
a * a → a 先算最右的赋值给a.
a + a → a 再算剩下右面的赋值给a.
如果是a*=a+=a;结果就是18.
添加回答
举报
0/150
提交
取消