问题描述:
请把下面的实例剖析一下!我把它和C语言搞糊涂了!运行结果和我计算的不同!拜托了!
1 public class Sampie
2 {
3 public static void main (String args[])
4 {
5 int a=5;
6 int b=5;
7 int m=3*a++;
8 int n=3*++b;
9 System.out.println("m="+m+", a="+a)//打印m的值以及a的值
10 System.out.println("m="+n+", b="+b)//打印n的值以及b的值
11 }
12 }
问题解答:
主要的地方给你注释上了,希望你能明白啦!!
public class Sampie
{
public static void main (String args[])
{
int a=5;
int b=5;
int m=3*a++; //先把3*a的值赋给m,然后a才自加1,所以m的值就是15,a的值就是6
int n=3*++b; //b先自加1,然后和3相乘再赋给n,所以n的值是18,b的值是6
System.out.println("m="+m+", a="+a);//打印m的值以及a的值
System.out.println("n=" + n + ", b=" + b);//打印n的值以及b的值
}
}
m=15,a=6
m=18,b=6
你最后一条语句是不是想输出System.out.println("n="+n+", b="+b);
好像你的n写成m了。。。
Java里的自加自减应该和C里面一样吧?
c/c++/java大部分一样,自加自减运算一样。
你就是最后一行写错个m而已。你计算错了,认真再算算。
m=15,a=6
m=18,b=6
Java里的自加自减完全和C里面一样。
int m = 3*a++;意思是a后加,a先运算之后才加加加,所以m=3*5=15,a加加后变成6
而int n = 3*++b;这个巧好和上面的相反b先加加之后才运算,即b=6;n = 3*6=18
希望对你有所帮助
这你看看他们的优先级啊 就是这问题 应该是自增自减得优先级高于乘法的优先级 所以先计算自增 自减