黑马程序员技术交流社区
标题:
运行结果和想象的不一样
[打印本页]
作者:
yangyinhui
时间:
2013-4-6 16:07
标题:
运行结果和想象的不一样
本帖最后由 yangyinhui 于 2013-4-6 18:16 编辑
private static void demo2() {
int a = 2;
int b = a++ + 3 * a;
System.out.println(b);// b=8
}
private static void demo1() {
int a = 2;
int b = a + 3 * a++;
System.out.println(b);// b=13
}
}
复制代码
今天复习发现的疑惑
我认为的是b = a + 3 * a++; b应该是9首先3 * a++为3*2为6,a再自加的到a=3,再加上前面的a到结果为9.
但是运行结果为8.求详细解释?
作者:
騛鹏
时间:
2013-4-6 16:18
b = a + 3 * a++; 首先,运算规则为从左到右。 a(a=2) + 3 * a++(这里的a++是先使用再自增,即3*2=6)--->2+3*2=8
作者:
张先龙
时间:
2013-4-6 16:34
a++是先用后加 lz肯定是明白的 你错误的原因是你把代码在自己脑海里面运行了 因为是同在一行代码 a + 3 * a++在编译的时候第二个a的值已经确定为2了 结果当然是8了 执行完这一行代码之后a才会变成3 。
作者:
郭彦君
时间:
2013-4-6 17:28
看了半天把我搞晕了,你demo1中的b是11,不是你标的13吧,demo2中的b是8没问题。
你是按照我们平时的思维去计算的,弄反了。
b = a + 3 * a++;应该先记录a的值,a此时是2,相当于2+ 3*a++;a还是2,先参与运算,变成了2+ 3*2,,结果就是8,但是此时a的值为3
作者:
田光峰
时间:
2013-4-6 18:00
private static void demo2() {
int a = 2;
int b = a++ + 3 * a;
System.out.println(b);// b=8
}
private static void demo1() {
int a = 2;
int b = a + 3 * a++;
System.out.println(b);// b=13
}
}
是这样的:
int a = 2;
int b = a++ + 3 * a;
a++是先运算后加一, b=a+3*a=8; 之后a加一变为3.
作者:
陈丽莉
时间:
2013-4-6 18:15
若没有问题,请将帖子分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2