在用下面一段代码测试自增运算符时,结果和自己的想象有点出入,测试结果为8,为什么不是9???
public static void main(String[] args) {
// TODO 自动生成方法存根
int a=2;
int b;
int c;
b=a+3*a++;
System.out.println(b);//result is 8,why is not 9;
}
public static void main(String[] args) {
// TODO 自动生成方法存根
int a=2;
int b;
int c;
b=a+3*a++;
System.out.println(b);//result is 8,why is not 9;
}
解决方案 »
- 通过File类创建文件失败
- 一个很简单的JavaFX例子,在我机器上显示不正确,不知是我机器问题,还是JavaFX的Bug,高手帮忙鉴定一下~~~
- QQ的UPD聊天原理
- 对自己没有信心,不知道这样写线程是不是对的
- Eclipse中调试无故中止!
- jdbc链接oracle取数据不正常-
- 请问java是如何表现多态性的,困惑中
- 使用ant deploy web至linux的weblogic服务器上时,出现NoClassDefFoundError,大概会是什么原因?
- 我用jdbc访问Access数据库的时候,碰上个奇怪的现象
- 请教我的rs.getRow()出错?
- 几个基础问题
- 如何写这个操作文本文件的程序(问了N次没人答)
在Eclipse中测试
表达式是由左向右计算 且一旦读取后值不再变更(应是放入独立值栈了)b = a + 3 * ++a;
result: 11b = ++a + 3 * a;
result: 12如上两行测试可见一斑
那么运算结果就是12了
++的优先级别要高于*而b=a+3*a++;
相当于先3*a然后与static的a相加咯!嘿嘿
b=a+3*a++; ==>b=a+3*a; a=a+1; 结果是8,而a是3;
如果b=++a*3+a ==>a=a+1; b=a*3+a; 结果是12;