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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目一
int a = 3;
a = a * a;//结果为9;
题目二
int a = 3;
a = a * a--;//结果为9;
题目三
int a = 3;
a = a++ * a--;//结果为12;
题目四
int a = 3;
a = a++ * a;//结果为12;

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

3 个回复

正序浏览
惜爱上缘 发表于 2015-7-5 16:14
谢谢您,还想问您一句,--和++的运算符级别要高于=,为什么要不执行a = a * a--最后面的--呢.还有a=a++,跟这 ...

答:
第一问:
运算从左向右看
a=a++ *a; 用括号==》((a=a++) *a) 从左向右 所以要先执行++,注意这里的括号其实应该这么括a=((a++) * a)前面是为了告诉你从左向右
第二问:
a=a++;其实对这段运算来说就是a=a; ++无意义。如果语句是b=a++,那么就是b=a;b的结果是3,++对这段运算无意义.然后进行a++,这样a的结果就是4.
回复 使用道具 举报
qq4916097 发表于 2015-7-5 15:59
从左往右看
题目一不解释
题目二

谢谢您,还想问您一句,--和++的运算符级别要高于=,为什么要不执行a = a * a--最后面的--呢.还有a=a++,跟这个是一个道理的吗?
回复 使用道具 举报
从左往右看
题目一不解释
题目二
a = a * a--;  等价于 a=a*a;为什么去掉--那是在赋值语句结束后执行,就这段代码没意义。
题目三
a = a++ * a--;等价于a=(a++) * a = 4*3;为什么去掉--那是在赋值语句结束后执行,就这段代码没意义。
题目四 同3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马