2011-01-15 2 views
5

сегодня, когда я работал над некоторым кодом, я натолкнулся на звуковой сигнал при печати буфера на экран. Вот таинственный персонаж, который производит сигнал: «» я не знаю, если вы можете видеть это, но мой компьютер издает звуковой сигнал, когда я пытаюсь напечатать это следующим образом:Странный звуковой сигнал при использовании cout

cout<<(char)7<<endl; 

Другой интересный момент в том, что «beep» не исходит от моего бортового бипера, но из моих наушников/динамиков

Это просто мой компьютер или что-то не так с функцией cout?

EDIT:

Но тогда почему печать этого символа производит звуковой сигнал? означает ли это, что я мог бы отправлять других таких символов через функцию cout для создания разных эффектов?

+3

Я жду пуансонов ... ASCII-код 7 - системный звуковой сигнал (Control-G). – tawman

+1

У вас, вероятно, есть где-то в конфигурации звуковой карты «Система воспроизведения звуковых сигналов через динамики». Если вы отключите это, вы должны услышать 0x7, как он должен был быть услышан, как неудобно громкая пилообразная волна, исходящая от самого дешевого динамика, которого может найти ваш производитель ПК. – Seth

ответ

12

В ASCII символ 7 является символом «звонок», который сигнализирует терминалу, что он должен звучать.

EDIT: Чтобы ответить на ваш последующий вопрос, это действительно по историческим причинам. Старые терминалы телетайпа нуждались в способе оповестить оператора о входящем сообщении, чтобы использовать колокол. Символ колокола сказал терминалу позвонить на звонок, а не напечатать символ.

Современные терминальные эмуляторы выполняют практически то же самое, хотя обычно они имеют возможность заменить звуковой звонок визуальным.

+0

Вы были первым, чтобы получить согласие – Unknown

3

char 7 - код ASCII для BELL. Написание этого символа на консоли приводит к тому, что компьютер издаст звуковой сигнал. Это совершенно нормально.

12

0x7 - символ ASCII, который производит звук «звуковой сигнал». Это непечатаемый символ. Ниже приведен полный список символов ASCII и их кодов: http://www.asciitable.com/

Редактировать: Звук может использоваться для настоящей мелодии вещей. Однако вы не можете производить другие эффекты, отправляя другие части данных. В таблице в ссылке выше все, что содержится в списке ниже 0x20 (32 десятичных), является символом, не подлежащим печати. Они могут иметь разные эффекты в зависимости от того, где данные фактически выводятся.

В принципе, вы могли бы просто написать цикл для вывода 0- (какой бы номер вы хотели остановиться), чтобы поэкспериментировать и посмотреть, что вы можете получить.

+1

+1 для настоящего меланжа. –

3

chat 7 - фактически символ «beep», а не символ экрана. Хотя иногда документация может показывать персонажа, это обычно не то, что вы можете визуально визуализировать.

Смежные вопросы