新手关于C#里循环的问题

epitaphX 2015-12-22 06:17:32
private void button1_Click(object sender, EventArgs e)
{
int p = 2;
for (int q = 2; q < 32; q = q * 2)
{
while (p < q)
{
p = p * 2;
}
q = p - q;
MessageBox.Show("" + p, "" + q);
}


请问为什么这段代码会循环8次,用messagebox.show(“” + p,"" + q)显示p第一次循环结果是2,可是while循环后p变量不是变为4了吗,而且p的值为4之后再循环到while(p<q)之后条件为false应该会结束循环才对吧?

菜鸟刚买书看的不是太了解这段,求各位大大慷概解答 谢谢
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
epitaphX 2015-12-22
  • 打赏
  • 举报
回复
引用 1 楼 LvBao_117 的回复:
第一次for循环,p=2,q=2,所以不执行while循环,p仍然是2
谢谢大大 是我没认真看书上的注释,把第三条语句也算到每一次的计算里
LvBao_117 2015-12-22
  • 打赏
  • 举报
回复
接着上面 再往下,q=p-q后,q是0,p仍是2,然后回到for循环,判断q(0)<32,成立,继续for循环
xuzuning 2015-12-22
  • 打赏
  • 举报
回复
2, 0 2, 2 4, 0 4, 4 8, 0 8, 8 16, 0 16, 16
LvBao_117 2015-12-22
  • 打赏
  • 举报
回复
第一次for循环,p=2,q=2,所以不执行while循环,p仍然是2

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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