为啥当我为 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++ 书中有一个快速练习,可以打印一组从 az 的字符。我在 Visual Studio 2019 中输入了以下代码。

char alphabet = 0;
    
while (alphabet < 130)

    cout << char(alphabet + 1)<<"\n";
    ++alphabet;

我可以理解为什么我的代码会打印奇怪的字符和符号,因为我选择了 1 到 130 之间的 ASCII 字符。但是,真正的问题是我的终端每次都会发出哔声,即使在打印完所有字符之后也是如此.我知道哔声是 ASCII 字符集的一部分,但它只是字符 7。但在我的情况下,终端会连续发出哔声,直到我从任务管理器中终止可执行文件。 请告诉我出现此类问题的原因,并且请不要说此代码打印的数量超过az。我只是选择了一个随机数,以便在终端中获得字符az。 我在 Windows 7 上运行此代码,因此如果操作系统与它有关,请告知。

【问题讨论】:

for (char c = 'a'; c &lt;= 'z'; ++c) cout &lt;&lt; c &lt;&lt; "\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 代码在从文本文件中读取时会打印额外的字符“”?

为啥在 C++ 中重写一次基方法会被调用

为啥打印 char* 会给出字符串而不是地址? [复制]

为啥当我在 MD5 哈希中转换相同的 C++ 字符串时,每次都会获得不同的输出?

为啥下面的 C++ 代码只打印第一个字符?

为啥当我为我的 CABasicAnimation 设置低持续时间值时它会跳跃?