C++在循环行时显示字符
C++ display char while loop rows
我对编程很陌生,所以如果这个问题看起来简单得离谱,我很抱歉。在我的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循环将代码中的变量"letter"更改为int而不是char,它会按照我希望的方式运行,并在应该终止时终止,只显示实际数字而不是ASCII值。
只有当"letter"是一个字符时,我才会得到一个无限循环。我相信这真的很简单,我可能只是太累了,现在看不到,但任何帮助/提示都将不胜感激!尽管从技术上讲我已经得到了答案,但我不知道为什么第二个答案会如此糟糕,这让我抓狂。
提前谢谢。
答案很简单,足够正确。以下是发生的情况-(有符号)字符在内部循环中的值可以在[-128127]范围内。当您将行输出到112时,您可以用另一个16来增加计数,因此您也可以用16来增加字母,这使得字母等于112+16=128,由于有符号字符的范围,实际上溢出了,变成了-128。因此,在执行内部循环之后,外部循环的条件仍然成立:-128<127.这也是为什么你会得到奇怪的字符——这些字符的值在-128到32之间。
如何解决问题?更改内部循环中的检查:while (count < 16 && letter < 127)
当字母==48,64,…时,内部while循环退出。。。,128。但是由于它是一个(有符号的)字符,128被解释为-128,外部循环不会终止。将内环更改为
while (count < 16 && letter < 127)
以获得与第一个示例中相同的行为。
或者将字母改为int,如果可以打印包括127:在内的所有字符
int letter = 32;
...
cout << (char)letter << " ";
试试这个代码:
#include <iostream>
using namespace std;
int main()
{
int letter;
for (letter = 32; letter < 128; ++letter)
{
if (letter != 32 && letter % 16 == 0)
cout << endl;
cout << (char)letter << ' ';
}
}
- 字符串-C++后显示的随机字符
- 显示基于用户输入的整数的字符
- 在将字符插入 2d 字符串时如何不显示空字符?
- 为什么strlen(s)与s的大小不同,为什么cout-char显示的是字符而不是数字
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 将终端设置为原始模式:仅在按下下一个键后显示字符
- 控制台上不显示 \b 字符的输出
- C 我将如何在字符串中显示字符作为数字
- 数组索引不显示字符
- C++井字游戏不显示X字符
- 在 gcc 中显示字符数组不起作用
- 显示字符名称C 名称的标准解决方案
- 更改 Visual Studio 调试器显示字符变量的方式
- FTGL:渲染时不显示字符
- 显示字符的矢量
- C++在循环行时显示字符
- 显示字符数组C++时出现奇怪字符
- 在二维数组中显示字符
- 如何在c++中显示字符值为字符串
- 有一种方法来显示字符的矩阵作为一个图像