【发布时间】:2012-02-22 23:39:42
【问题描述】:
我对编程很陌生,所以如果这个问题看起来简单得离谱,我深表歉意。我正在研究我的 C++ 书当前章节中的一些额外问题。我实际上已经找到了问题的正确答案,但是在这样做的过程中,我遇到了一种让我发疯的情况,因为我无法弄清楚为什么一种特定的解决方案有效而另一种无效。
因此,问题要求在几行中打印 32 到 127 之间的 ASCII 值,每行 16 个字符。我得到的解决方案(正常工作)是这样的:
#include <iostream>
using namespace std;
int main()
{
char letter;
int count = 0;
for (letter = 32; letter < 127; letter++, count++)
{
if (count == 16)
{
cout << endl;
count = 0;
}
cout << letter << " ";
}
cout << endl;
return 0;
}
再一次,上面的代码运行良好,可以做我想做的事。困难在于我在此之前尝试过的东西。我试图用嵌套的 while 循环来解决同样的问题,如下所示:
#include <iostream>
using namespace std;
int main()
{
char letter = 32;
int count;
while (letter < 127)
{
count = 0;
while (count < 16)
{
cout << letter << " ";
letter++;
count++;
}
cout << endl;
}
cout << endl;
return 0;
}
这个while循环无限运行,并且在我想要的ASCII字符之后吐出一些垃圾,我不知道为什么。更奇怪的是,如果我使用 while 循环将代码中的变量“字母”更改为 int 而不是 char,它会完全按照我想要的方式运行并在应该时终止,只显示实际数字而不是 ASCII价值观。
只有当“字母”是一个字符时,我才会得到一个无限循环。我敢肯定这真的很简单,我现在可能太累了,看不到它,但任何帮助/提示将不胜感激!尽管我在技术上得到了答案,但我不知道为什么第二个答案如此糟糕地失败了,这让我发疯了。
提前致谢。
【问题讨论】:
标签: c++ loops for-loop while-loop infinite