回 帖 发 新 帖 刷新版面

主题:初学者循环结构求助

[code=c]
 int k=1,m=1,n=10;
  while(k++<=n)
  {
  m=m*2;
  }
  printf("m=%d\n",m);
[/code]
当k=10的时候,m=512;当k=11的时候,m=m*2还要运行吗?TC调试时显示还要运行一次,m的最终结果是1024。搞不懂的是,当k=11的时候,循环不是应该跳出了吗?

回复列表 (共2个回复)

沙发

这里是++在前还是在后的问题 你k++的++在后所以要先判断k<=n是否成立然后自身加1 当k=10的时候其实程序只循环了9次 然后判断k=10<=n成立 循环第10次 k这时变为11 终止循环

板凳

k=1,m=2=2^1,then k=2
k=2,m=4=2^2,then k=3
.
.
.
k=9,m=2^9 ,then k=10
k=10,m=2^10=1024,then k=11 stop

我来回复

您尚未登录,请登录后再回复。点此登录或注册