【问题标题】:Why is this do while loop infinitely executing?为什么这个do while循环无限执行?
【发布时间】:2018-07-03 15:00:52
【问题描述】:

为什么这个do while循环会无限执行?

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
unsigned int base;
cout << "Base: ";
cin >> base;
for (int i = 1; i <= base; i++) {
    int j = 0;
    do {
        cout << "#";
        j++;
    } while (j = i);
    cout << endl;
};
system("pause");
// keep on building up until you reach 'base'
return 0;
}

我真的很困惑。这个程序应该创建一个像这样的三角形

#
##
###

(用户输入底部数字,因此在本例中基数 = 3) 有人帮忙解决我的菜鸟错误吗?

【问题讨论】:

  • 是否应该说:} while ( j == i ); 而不是j = i

标签: c++ loops infinite-loop do-while


【解决方案1】:

你可能想试试while (j == i);

j = i 是一个变量声明/赋值,只要它成功就永远为真。看来您想比较两者,所以使用 equal to 运算符: ==.

编辑:打错了,因此与您的问题显示的错误相同。解决了这个问题。

【讨论】:

  • 感谢它修复了无限循环,但它并没有做它应该做的事情。回到绘图板我去。
  • 帮不了你,我不小心偶然发现了这个问题,并且可能写的 c++ 比这个问题包含的要少。
  • @AdamIsAProgrammer cout 是否总是换行?
  • 它返回## # # # # 如果我输入 5(每个 # 之后的新行,除了第一个),这真的很令人困惑。因为我不知道## 是如何到达那里的
  • 我现在看到了cout &lt;&lt; endl;。我唯一能想到的就是cout &lt;&lt; "\n"; 作为新产品线的尝试。否则你可能不得不摆弄一下,也许会问一个新问题。
猜你喜欢
  • 2016-07-14
  • 1970-01-01
  • 2018-03-17
  • 2016-05-26
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多