for (i = 0, j = 0; i < 10; i++) j += j++; 为什么结果是j=0

IT衡 2015-05-25 11:27:16
for (i = 0, j = 0; i < 10; i++) j += j++;

j+=j++ ,先完成运算j=j+j=0, 然后自加j=1,代入再一轮循环,有什么不对么?为什么结果是0?
...全文
1254 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatnamecaniuse 2015-05-28
  • 打赏
  • 举报
回复
#include <stdio.h> int main(int argc, char* argv[]) { for(int i=0,j=0; i<10; i++) { j += j++; printf("%d\r\n", j); } return 0; } 1 3 7 15 31 63 127 255 511 1023 VC2012
u010185450 2015-05-28
  • 打赏
  • 举报
回复

编译器问题,centos5.6 x64 g++运行正常。
shengfenglai 2015-05-27
  • 打赏
  • 举报
回复
有问题就问,学习了
xia夜 2015-05-27
  • 打赏
  • 举报
回复
编译时j += j++就和j += j的效果一样,个人认为j += j++;会产生异意,如果j=2的话,在计算之前j是等于2的,这是先计算j += j然后再j才自加1,但是在计算j += j后j=4,那么这时那个j自加1的是,原来的j=2自加1还是之后的j=4自加1呢?因此产生异意。
潘少博 2015-05-27
  • 打赏
  • 举报
回复
挺好的问题。学习
jiahuixing7 2015-05-27
  • 打赏
  • 举报
回复
代码最好不要这样写,因为别人看不懂你自己也会看不懂。j++和++j得到的结果是不同的。j+=j++很容易会理解错误的,所以最好还是分开写吧~
iphilip 2015-05-27
  • 打赏
  • 举报
回复
没什么意义!!!!!!!!!!!!!!!!!!!!!
sirnuo 2015-05-27
  • 打赏
  • 举报
回复
j+=j++; j 本来加1了,然后又被赋值为0了。 你改成 j+=++j;试试。
BrightFireOfCy 2015-05-26
  • 打赏
  • 举报
回复
j++ 表达式的值是0。。。。。。
code小生 2015-05-26
  • 打赏
  • 举报
回复
每次执行完循环体之后j的值并不是0,但是在判断循环条件的时候,都将j的值初始化为0,所以最后输出来的结果是0.
风吹过夏天 2015-05-26
  • 打赏
  • 举报
回复
看到这样的代码,小心项目经理抽你。
zhrubin 2015-05-26
  • 打赏
  • 举报
回复
不要写自己看不懂的代码...
alan19931103 2015-05-26
  • 打赏
  • 举报
回复
不对,这个过程还可以再分,先计算,然后赋值。所以先计算j + j++,结果是0,计算完成以后j加1,此时j=1,然后复制,把j赋值为计算结果0。所以最后一直是0。

你要+1,直接++就可以了,不要j=.
JPF1024 2015-05-26
  • 打赏
  • 举报
回复
写完过几天,你自己都不认识了。。。。。。
飏飏一蝶 2015-05-25
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_605f5b4f0100khy0.html 这类问题点讨论意义都没有

62,631

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧