为啥当我为 C++ 代码打印字符时,我的终端会发出哔声?
Posted
技术标签:
【中文标题】为啥当我为 C++ 代码打印字符时,我的终端会发出哔声?【英文标题】:Why is my terminal producing a beep sound whenever I am printing characters for C++ code?为什么当我为 C++ 代码打印字符时,我的终端会发出哔声? 【发布时间】:2021-08-21 15:07:56 【问题描述】:我是 C++ 编程的初学者。最近在我的 C++ 书中有一个快速练习,可以打印一组从 a
到 z
的字符。我在 Visual Studio 2019 中输入了以下代码。
char alphabet = 0;
while (alphabet < 130)
cout << char(alphabet + 1)<<"\n";
++alphabet;
我可以理解为什么我的代码会打印奇怪的字符和符号,因为我选择了 1 到 130 之间的 ASCII 字符。但是,真正的问题是我的终端每次都会发出哔声,即使在打印完所有字符之后也是如此.我知道哔声是 ASCII 字符集的一部分,但它只是字符 7。但在我的情况下,终端会连续发出哔声,直到我从任务管理器中终止可执行文件。
请告诉我出现此类问题的原因,并且请不要说此代码打印的数量超过a
到z
。我只是选择了一个随机数,以便在终端中获得字符a
到z
。
我在 Windows 7 上运行此代码,因此如果操作系统与它有关,请告知。
【问题讨论】:
for (char c = 'a'; c <= 'z'; ++c) cout << c << "\n";
将适用于 ASCII。对 EBCDIC 来说不太好。
(英文)字母表中有26个字母;添加大写和小写得到 52。打印 300 个值将显示远远超过 52 个字符。剩下的 248 篇中包含大量看似无稽之谈的内容。
这段代码中没有任何与 ASCII 字符相关的内容。该代码只是打印出数字,表示为 numeric 类型的图表。由您的终端决定如何显示这些数值。 ASCII 是迄今为止最常见的代码,因此几乎可以肯定终端将这些值视为。但是,同样,程序中没有任何与 ASCII 相关的内容。
【参考方案1】:
这个条件
while (alphabet < 130)
总是计算为真,因为char
类型的范围通常为 [-128, 127]。当alphabet
的值为 127 并增加 1 时,它将环绕并具有值 -128。因此,您的程序尝试以某种方式打印所有这些值。正数对应 ASCII 值,其中值 7 指示终端发出哔哔声。
【讨论】:
感谢您提供这个解决方案。所以这意味着我的终端正在发出哔哔声,因为这个循环使它发出哔哔声并且永远持续 @Chinmaya 没错。alphabet
将永远在 -128 和 127 之间循环,每次其值为 7 时,它都会指示终端发出哔哔声。以上是关于为啥当我为 C++ 代码打印字符时,我的终端会发出哔声?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Python 代码在从文本文件中读取时会打印额外的字符“”?