public static void main(String[] args) {
int a=1,b=2,c=3;
b+=c--/++a;
System.out.println(b+=c--/++a);
System.out.println(a+" "+b+" "+c);
}
通过运行程序当然可以知道结果.但是我就想不通结果怎么来的...希望有人能够给出一个过程!谢谢啦~
int a=1,b=2,c=3;
b+=c--/++a;
System.out.println(b+=c--/++a);
System.out.println(a+" "+b+" "+c);
}
通过运行程序当然可以知道结果.但是我就想不通结果怎么来的...希望有人能够给出一个过程!谢谢啦~
對于后置++:
在第一步中,計算時它的值不變,這句執行完畢后自增
int i = 1;
int temp = 0;
temp = i++; --1---此時temp=1,i=1
temp = i; --2---此時i = 2對于前置++:
在第一步中,計算時它的值先自增
int i = 1;
int temp = 0;
temp = ++i; --1---此時temp=2,i=2
temp = i; --2---此時i = 2
int a=1,b=2,c=3;
b+=c--/++a; //这一句先计算c/++a,也就是3/2=1,而c--再减1,这样b+=c--/++a=3,c从3变为2,a从1变为2;System.out.println(b+=c--/++a);
//这一句同上,把上面的过程再算一次.先计算c/++a,也就是2/3=0,c--后c从上面的2变为1,a从上面的2变为3,b=b+0=3System.out.println(a+" "+b+" "+c);
} 最后结果为3 3 1
如果n=1
m=n++ ------>m=1 ,n=2
m=++n ------>m=2 ,n=2前者是先把n的值付给m 后n自增
后者是先n自增 后把n的值付给m
-- 一样int a=1,b=2,c=3;
b+=c--/++a;
=> b=b+(c/a) c=3 a=2
=> b=2+(3/2)
=> b=3 (b=2+1.5 取整为3) 此时c=2 a=2后面的运算同上
{
double a=1,b=2,c=3;
b+=c--/++a;
System.out.println(b);
System.out.println(b+=c--/++a);
System.out.println(a+" "+b+" "+c);
}
int a=1,b=2,c=3;
b+=c--/++a; ++a //a=2
所以b+=c/++a 则b=b+3/2 //b=3
c-- //c=2
在打印语句System.out.println(b+=c--/++a);
时b+=c--/++a;又执行了一次!++a //a=3
所以b+=c/++a b=b+2/3 //b=3;
c-- //c=1结果 3
3 3 1
如果程序代码是这样的话就不同了:
public static void main(String[] args) {
int a=1,b=2,c=3;
int j;
j=(b+=c--/++a);
System.out.println(j);
System.out.println(a+" "+b+" "+c);
}
具体的计算过程:b=b+(c)/(a+1)
因为c--是先使用后自减;++a是先使用,后自加