黑马程序员技术交流社区

标题: 遇到了点运算符问题,请高手给解答一下,很感谢! [打印本页]

作者: 惜爱上缘    时间: 2015-7-5 15:27
标题: 遇到了点运算符问题,请高手给解答一下,很感谢!
题目一
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;
作者: qq4916097    时间: 2015-7-5 15:59
从左往右看
题目一不解释
题目二
a = a * a--;  等价于 a=a*a;为什么去掉--那是在赋值语句结束后执行,就这段代码没意义。
题目三
a = a++ * a--;等价于a=(a++) * a = 4*3;为什么去掉--那是在赋值语句结束后执行,就这段代码没意义。
题目四 同3
作者: 惜爱上缘    时间: 2015-7-5 16:14
qq4916097 发表于 2015-7-5 15:59
从左往右看
题目一不解释
题目二

谢谢您,还想问您一句,--和++的运算符级别要高于=,为什么要不执行a = a * a--最后面的--呢.还有a=a++,跟这个是一个道理的吗?
作者: qq4916097    时间: 2015-7-5 16:34
惜爱上缘 发表于 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.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2