关于i++内部的运算,一直没能搞得太明白,请专业人士帮忙.public class Test1 {
public static void main(String[] args) {
int x,a=6,b=7;
x=a++ + b++;
System.out.println(a);//这里的答案是7
System.out.println(b);//8
System.out.println("x="+x);//13
System.out.println(a);//7
System.out.println(b);//8
}
}为什么?
到底其底层是如何实现的呢?
public static void main(String[] args) {
int x,a=6,b=7;
x=a++ + b++;
System.out.println(a);//这里的答案是7
System.out.println(b);//8
System.out.println("x="+x);//13
System.out.println(a);//7
System.out.println(b);//8
}
}为什么?
到底其底层是如何实现的呢?
可以这样翻译:
x = a + b;
a = a + 1;
b = b + 1;
++a就是反过来了
你课一试试用++a换掉a++再比较下
看我的具体分析吧.
当 x=a++ + b++;执行完之后,a,b都就加1 了
而x值是13 是因为 a和b运算完之后才加1
如果是x=++a + ++b 的话 那么就是15了
x= a++ <=> x=a;
a = a +1;x= ++a <=> a = a+1;
x= a;
这里有一个网址有java运算符优先级表。http://tech.sina.com.cn/s/2008-06-10/07452246517.shtml
a++称后缀式:会先生成值,在执行计算原题: int x,a=6,b=7;
x=a++ + b++;
相当于:X=a++加上b++ (因为都是前缀试,所以先执行加法运算,所以x=13。然后在各自加1得到自己的值a=7.b=8)
a++称后缀式:原值先用于表达式中,然后才加1.原题: int x,a=6,b=7;
x=a++ + b++;
相当于:X=a++加上b++ (因为都是后缀试,所以原值先用于表达式中,所以X=6(a的原值)+7(b的原值)即等于13。然后在各自加1得到自己的值a=7.b=8)
public static void main(String[] args) {
int x,a=6,b=7;
x=a++ + b++;
//运行到这里时
//而a++是先运算再++所以参与x赋值时他还是a=6
//同理b=7
//(++a 是先++再运算)
a++执行过了所以a=6+1=7 b++执行过了所以b=7+1=8 System.out.println(a);//这里的答案是7
System.out.println(b);//8
System.out.println("x="+x);//13
System.out.println(a);//7
System.out.println(b);//8
}
}
//不知道楼住需要是否是这样的解释?