关于a=3,则a+=a*=a的表达式问题

关于a=3,则a+=a*=a的表达式问题

赋值运算符从左往右算, 则a*=a相当于a=3*3=9, 那么这个时候a不就=9了吗? 为什么运算到a+=a的时候应该是a=9+9=18吧?为什么是a=3+9? 求老师解答

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
albert_aGHTZ7 2022-01-15 09:00:20

运算到a+=a的时候应该是a=9+9=18吧?

赋值运算是从右向左运算,并且初始值均为a=3。9只是a*=a的值。当计算到a+=9时,这个时候的a还是初始值 。即a=a+9=3+9=12

自动判断中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语自动选择中文中文(简体)中文(香港)中文(繁体)英语日语朝鲜语德语法语俄语泰语南非语阿拉伯语阿塞拜疆语比利时语保加利亚语加泰隆语捷克语威尔士语丹麦语第维埃语希腊语世界语西班牙语爱沙尼亚语巴士克语法斯语芬兰语法罗语加里西亚语古吉拉特语希伯来语印地语克罗地亚语匈牙利语亚美尼亚语印度尼西亚语冰岛语意大利语格鲁吉亚语哈萨克语卡纳拉语孔卡尼语吉尔吉斯语立陶宛语拉脱维亚语毛利语马其顿语蒙古语马拉地语马来语马耳他语挪威语(伯克梅尔)荷兰语北梭托语旁遮普语波兰语葡萄牙语克丘亚语罗马尼亚语梵文北萨摩斯语斯洛伐克语斯洛文尼亚语阿尔巴尼亚语瑞典语斯瓦希里语叙利亚语泰米尔语泰卢固语塔加路语茨瓦纳语土耳其语宗加语鞑靼语乌克兰语乌都语乌兹别克语越南语班图语祖鲁语百度翻译谷歌翻译谷歌翻译(国内)翻译朗读复制正在查询,请稍候……重试朗读复制复制朗读复制来源 谷歌翻译(国内)
爱问问题的小菜鸡 2022-01-13 20:55:53
int a = 3;
a+=a*=a;

正确答案是:12

把式子拆解之后是a = a + a = a * a; 然后式子从右侧开始算,那么就是:

1、 a = a + a = 9;

2、a = a + 9;

3、a = 3 + 9;

4、a = 12;



爱问问题的小菜鸡 2022-01-13 20:52:47

正确答案是:12

a+=a*=a;

把式子拆解之后是a = a + a = a * a; 然后式子从右侧开始算,那么就是:

1、a = a + a = 3 * 3;

2、a = a + 9

3、a = 3 + 9

4、a = 12


好帮手慕小明 2022-01-07 09:54:15

同学您好,

上述语句a+=a*=a中包含两个运算符+=和*=;因为+=,*=都是赋值运算符,所以从右向左执行:先计算a*=a,即a=a*a=9;再算a+=9,即a=a+9,所以最后结果a= 3+9=12

祝同学学习愉快~


  • 这个回答,我感觉还是不清楚。最后为什么不是a=9+9;而是a=3+9

    2022-01-09 22:53:43
  • 同学你好,在Java复合运算中的中间变量是不会重新赋值的。

    赋值运算从右向左执行,故先计算a=a*a即a=a*a=9,但在进行a+=a*=a运算时a*a的结果不会重新赋值给a,所以在计算“a=a+9”时a的值仍为3,即a=3+9。

    另外建议同学在对应章节进行提问哦。

    祝学习愉快~

    2022-01-10 10:10:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师