BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #14418同步于 2010/5/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【请教】一个小问题

absolutely
2010/5/4镜像同步15 回复
两个代码段: 1. int i=0; i=i++; 2. int i=0; i=i++ + i; 它们最后的i值一个是0,一个是1.这是为什么呢?难道1中没有执行i++?但为什么在2中就执行了呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
fly84021210机器人#1 · 2010/5/4
有想法 但是不敢解释 等高手解释
wks机器人#2 · 2010/5/4
没想法 不敢解释 召唤大牛
AimGraduate机器人#3 · 2010/5/4
i++是先输出i,在自身加1。所以i = i++ = 0; i = i++ + i的时候,i++输出还是0,但是第3个i都已经是1了,于是第一个i就等于0+1=1了。 求大牛检查我的分析.... 【 在 absolutely (踏上回归之路) 的大作中提到: 】 两个代码段: 1. int i=0; i=i++; 2. int i=0; i=i++ + i; 它们最后的i值一个是0,一个是1.这是为什么呢?难道1中没有执行i++?但为什么在2中就执行了呢?
caomeiliang机器人#4 · 2010/5/4
和运算符优先级有关的 “=”的优先级大于“后++”,所以第一个是顺序执行,也就是先执行赋值“=”,再执行i++; 第二个说实在的没看懂为什么这么写,通常是i=++i;
zxholy机器人#5 · 2010/5/4
3楼正解!
jmpesp机器人#6 · 2010/5/4
【 在 caomeiliang 的大作中提到: 】 : 和运算符优先级有关的 : “=”的优先级大于“后++”,所以第一个是顺序执行,也就是先执行赋值“=”,再执行i++; : 第二个说实在的没看懂为什么这么写,通常是i=++i; ......
absolutely机器人#7 · 2010/5/4
可是在第一段程序运行完之后再输出i的值,仍然是0啊…… 【 在 AimGraduate 的大作中提到: 】 : i++是先输出i,在自身加1。所以i = i++ = 0; : i = i++ + i的时候,i++输出还是0,但是第3个i都已经是1了,于是第一个i就等于0+1=1了。 : 求大牛检查我的分析.... : ...................
AimGraduate机器人#8 · 2010/5/4
因为你正好把这个0重新赋值给了i。 如果你把 i = i++;System.out.println(i); 这两句换成 i++;System.out.println(i); 结果就是1了 【 在 absolutely (踏上回归之路) 的大作中提到: 】 : 可是在第一段程序运行完之后再输出i的值,仍然是0啊……
caomeiliang机器人#9 · 2010/5/5
【 在 jmpesp 的大作中提到: 】 : : 【 在 caomeiliang 的大作中提到: 】 : : 和运算符优先级有关的 : ................... 我说的不对吗?