IT衡
2015-05-01 02:38
采纳率: 50%
浏览 1.7k
已采纳

新手问题 JAVA for语句

可能有点幼稚,不过实在是不明白……敢问下面这个语句的具体执行过程是什么样子的?

for (i = 0, j = 0; i < 10; i++) j += j++;

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • Z小繁 2015-05-01 07:17
    已采纳

    你好,你这段代码是没有太多实际意义的,个人认为你是写错了吧,从程序运行来看,结果全为0.如图图片说明;稍微改改就好了,j += j++;改成j += ++j;执行过程如下(以修改后的函数为例):
    ① i = 0, j = 0 ——》判断 i 是否<10 ——》是——》++j——》将++j的值1带入计算式j +=++j,此时j=1;
    ②i++ ——》判断 i 是否<10 ——》i=1,是——》++j——》将++j的值2带入计算式j +=++j,此时j=3;
    ③余下省略。。。

    此题因注意
    (1)a= j++ 和 b=++j 的区别,假设 j=1;那么程序运行后,两者都有 j=2,但前者 a=1,后者 b=2 。
    见图图片说明
    图片说明
    (2)for ( A ; B ; C ){ D }执行顺序为A——》判断是否满足B——》满足则执行D(不满足则循环结束)——》C——》判断是否满足B满足则执行D(不满足则循环结束)——》。。。。
    修改代码后程序运行如图图片说明

    希望能帮到你,有什么问题可以继续问我。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-05-01 02:59

    不要这么写,j+=j++我不知道在java规范里面有没有,但是在C语言中,属于未定义行为。
    换言之,j = j + j++,j=j+j后然后j++还是j先++后覆盖回j,这是编译器自己实现,并且不保证所有编译器的行为是确定的。

    评论
    解决 无用
    打赏 举报
  • foreach_break 2015-05-01 06:01

    1,3,7,15,31,63,127,255,511,1023

    评论
    解决 无用
    打赏 举报
  • foreach_break 2015-05-01 06:04

    这是个数列,a(n) = 2a(n-1) + 1;

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题