请问这两个程序为什么结果会不一样

Tescapist 2019-05-04 06:00:57
程序1
public class Demo
{public static void main(String[] args)
{int a=1;
int sum=0;
int odd=1;
int i;
for(odd=1;odd<=20;odd++)
{for( i=1;i<=odd;i++)
a=2*a;
sum=sum+a;
System.out.println(sum+"sum");
}
}
}
输出结果为
2sum
10sum
74sum
1098sum
33866sum
2131018sum
270566474sum
....


程序2
public class Demo
{public static void main(String[] args)
{int a;
int sum=0;
int odd=1;
int i;
for(odd=1;odd<=20;odd++)
{for(a=1, i=1;i<=odd;i++)
a=2*a;
sum=sum+a;
System.out.println(sum+"sum");
}
}
}
输出结果为
2sum
6sum
14sum
30sum
62sum
126sum
254sum
510sum
1022sum
2046sum
4094sum
8190sum
16382sum
32766sum
65534sum
131070sum
262142sum
524286sum
1048574sum
2097150sum
不一样的只有a的赋值的位置
...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个问题其实你只要调试一下就很明显能看出来了 上面的程序a在外赋值,会累加 下面的程序 双层循环里面,内一层循环结束后,到外一层继续循环的时候,a会重新赋值1

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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