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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 每天进步一点点 中级黑马   /  2014-6-10 12:29  /  963 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 每天进步一点点 于 2014-6-12 21:38 编辑

遇到这样一道题:
a*=1+2+3;
结果a的值是60.



怎么回事啊??

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

3 个回复

倒序浏览
优先级问题,先计算1+2+3 = 6  ,再用6*a原来的值,再重新赋值给a。
这道题原题应该为  :
int a = 10; // 楼主忘了a的值了(通过结论,推倒出a=10)
a *= 1+2+3; // a *= 6  -> a = 6 * a -> a = 6 * 10 -> a = 60
printf("%d",a); // a = 60

评分

参与人数 1技术分 +1 收起 理由
ios风痕 + 1

查看全部评分

回复 使用道具 举报
大龄产妇 发表于 2014-6-10 12:33
优先级问题,先计算1+2+3 = 6  ,再用6*a原来的值,再重新赋值给a。
这道题原题应该为  :
int a = 10; //  ...

谢谢,知道了,运算符(+)高于(*=)是吧,不是+和*比较优先级高低,而是+和*=比较优先级是吧?
回复 使用道具 举报
这是基本的运算,即a乘等于1+2+3,把1+2+3的值算出来的6乘以a,再赋值给a,即左边的值乘以右边的值再给左边。a=a乘以右边的和6
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马