i + (i++))与(i++) + i int i = 2;System.out.println(i + (i++));//输出为4int i = 2;System.out.println((i++) + i);//输出为5虽然不建议这么写代码,但是真有这种情况的,为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一段代码 L0 LINENUMBER 9 L0 ICONST_2 ISTORE 0 L1 LINENUMBER 10 L1 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ILOAD 0 //从index为0的地方载入i ILOAD 0 //同上 IINC 0 1 //自增index为0的地方1 IADD // 这里和index 0一点儿关系都没有了,结果当然是4 INVOKEVIRTUAL java/io/PrintStream.println(I)V第二段代码 L0 LINENUMBER 14 L0 ICONST_2 ISTORE 0 L1 LINENUMBER 15 L1 GETSTATIC java/lang/System.out : Ljava/io/PrintStream; ILOAD 0 //从index为0的地方载入i i=2 IINC 0 1 //自增index为0的单元,这时候i=3了 ILOAD 0 //从index为0的地方载入i,i=3 IADD // 2+3=5 INVOKEVIRTUAL java/io/PrintStream.println(I)V java不清楚,但C++中得看编译器,不同编译器可能导致的结果不一样,另外楼主你都说不提倡这么写了,干嘛还为编译器的事纠结呢= = 额,很简单的,工程上可能不需要吧,但是搞研究的肯定要看一下,没有书可以参考看看JVM Specification,挂在java官网上 java 中有没有类似c# 中的Parse功能? 问几个简单的语句~ 请大家看看这题! 关于鼠标位置的问题! JSlider 两个滑块 关于《Thinking in Java》(java编程思想) JDBC高级特性!? 有关javamail的问题,异常no object DCH for MIME type multipart/mixed 请问谁有Struts中循环处理的例子?(nested标签) jdbc的问题:java.sql.SQLException: Illegal operation on empty result set. Java多播接收不到 把数组中大于10的数存在另一个数组中
LINENUMBER 9 L0
ICONST_2
ISTORE 0
L1
LINENUMBER 10 L1
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ILOAD 0 //从index为0的地方载入i
ILOAD 0 //同上
IINC 0 1 //自增index为0的地方1
IADD // 这里和index 0一点儿关系都没有了,结果当然是4
INVOKEVIRTUAL java/io/PrintStream.println(I)V第二段代码 L0
LINENUMBER 14 L0
ICONST_2
ISTORE 0
L1
LINENUMBER 15 L1
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ILOAD 0 //从index为0的地方载入i i=2
IINC 0 1 //自增index为0的单元,这时候i=3了
ILOAD 0 //从index为0的地方载入i,i=3
IADD // 2+3=5
INVOKEVIRTUAL java/io/PrintStream.println(I)V
看看JVM Specification,挂在java官网上