黑马程序员技术交流社区
标题:
一个运算题,求解释过程。。
[打印本页]
作者:
周四川
时间:
2012-4-26 14:18
标题:
一个运算题,求解释过程。。
public class test1 {
public static void main(String[] args) {
int j=0;
int a=0;
int b=a++ + j++ + ++j;
System.out.println(j);
System.out.println(a);
System.out.println(b);
}
}
复制代码
运行的结果是:
2
1
2
求解释程序的运算过程。。主要是那个b为啥等于2?
作者:
倪杭乘
时间:
2012-4-26 14:27
运算顺序从左到右
a++ 先参与运算(0)再加1(如果a++右边有用到a,那么a的值就是在1的基础上操作)
j++同a,0参与运算,j变成1
++j先自增再运算 j从1的基础上加1 等于2
所以 b是2 a是1 j是2
作者:
高彰谦
时间:
2012-4-26 14:34
// int b=a++ + ++j + j++ ;
int b=0;
{
j+=1;
b=a+j+j;
a+=1;
j+=1;
}
复制代码
同学,我把它替换了,这下应该清楚了吧
作者:
张小庆
时间:
2012-4-26 14:40
int b=a++ + j++ + ++j;
这句代码真正的算术运算是0+0+2
j++运算完后j为1,然后到++j时,运算前再加1,就为2了啊
作者:
周四川
时间:
2012-4-26 14:47
倪杭乘 发表于 2012-4-26 14:27
运算顺序从左到右
a++ 先参与运算(0)再加1(如果a++右边有用到a,那么a的值就是在1的基础上操作)
j++同a,0 ...
好吧,我是从右往左计算的。。。谢谢给纠正了。。
作者:
马浩
时间:
2012-4-26 14:49
public class test1 {
public static void main(String[] args) {
int j=0;
int a=0;
int b=a++ + j++ + ++j;
//a先和j相加等于0,然后自增得a=1,j=1;再和++j运算,j先自增得2, 0+2=2赋给b
System.out.println(j);
System.out.println(a);
System.out.println(b);
}
}
//等号右边的加法运算从左到右一项一项的加,结果就出来了j=2,a=1,b=2
作者:
李斌
时间:
2012-4-26 15:39
受教了
作者:
翟友伟
时间:
2012-4-26 15:53
int b=a++ + j++ + ++j;
起始值j=0 ,
j++ 后 j=1 .
++j 没运算前 j=1+1=2;
b= 0+0+2
++x 先 x++后 很容易理解的
作者:
付左军
时间:
2012-4-26 16:08
了解自增的顺序,a++先赋值在自增,++ j先自增在运算所以
int b=a++ + j++ + ++j;
运算过程是a,j相加为0,后自增。和自增后的J相加结果为2
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2