本帖最后由 L10052108 于 2016-11-22 21:57 编辑
这是我做的基础自我测评的一道题;我之前也经常使用自增和自减
(i++) 先运算后,后自增或自减
(++i)先自增或者自减,再运算
可是有多个自增的,就有点儿不懂了[AppleScript] 纯文本查看 复制代码 public class test {
public static void main(String[] args) {
int a = 10;
int b = (a++) + (++a) + (a * 10);
System.out.println(b);
}
} 输出的结果是:142
int b = (a++) + (++a) + (a * 10);
只有一种解释这条语句中后面三个a 的肯定不相同。原因呢?有什么规律,求解
2016年11月22日再次编辑
这道题我考虑了很久,现在说说我的想法:错误的地方请指出
如果只是简单的自增自减,是一个很简单的问题;
这道题目,考的显然不是考这个问题;而是多个自增自减之间的运算;这样就要考虑一个问题,
int b = (a++) + (++a) + (a * 10);
这个计算式,计算机是一次运算的吗?看起来是一条语句,应该是一次执行完成这条语句,可是事实上,计算机无法完成,会把这一条语句拆分成几条语句,进行运算
这样我们需要的是了解,这一条语句是如何进行,拆成几条语句的(如图所示)
[AppleScript] 纯文本查看 复制代码 第一句:a = 10; 运算结果是 a =10
第二句:(a++) 计算结果 a =11
第三句: 10 + (++a) 计算结果 (a++) +(++a) = 22;
第四句:b = 22 + (a*10) 计算结果 b = 142 a =12
如果把这个程序进行分解,完全按照计算机的运算的步骤的话,非常好理解了。
|