Эта программа звучит колокол!

Я совершенно новый студент в области программирования, поэтому я не могу понять эту программу, написанную в моей книге, что я слежу за несколькими днями. Программа такова:

#include "stdio.h" main() { printf("\a"); } 

Что означает эта программа? Означает ли эта программа, что мы могли услышать звонкий звонок? Я не слышу звонкого звонка!

Символ ASCII 7 является символом BELL, и он представлен в C как \a . Некоторые терминалы выдают звуковой сигнал, когда этот символ выводится на терминал; в настоящее время многие этого не делают. (Я смотрю на тебя, Убунту.)

Вернувшись в темные века, когда ASCII был кодифицирован из пепла BAUDOT , терминал был большим куском железа, который забил чернила на бумаге, часто включал бумажный пунш и считыватель, и интерпретировал нажатия клавиш для генерации асинхронного последовательного сигнала на несколько сотен бод с вращающимися колесами и реле.

В случае, если оператор заснул к успокаивающим звукам, забивающим текст, у него был настоящий звонок, который он мог бы звонить. Символ, закодированный 007 в восьмеричном, 0x07 в шестнадцатеричном формате или как \a в символе C или строковой константе, звонит в колокол, когда он получен.

Поскольку терминалы стали меньше и реализованы с небольшими или отсутствующими движущимися частями, физический звонок был заменен звуковым сигналом.

Именно то, что ваш эмулятор терминала (например, консольное окно в Windows, xterm или что-то подобное в Unix) делает, когда ему предлагается отобразить, что контрольный символ сегодня не стандартизирован. Это должно сделать шум или вспышка windows, но ваш пробег будет отличаться.

Взгляните на эту запись в википедии: символ колокола :

На языке программирования C (созданный в 1972 году) символ колокола может быть помещен в строку или символьную константу с \ a (‘a’ означает «alert» или «audible» и был выбран потому, что \ b уже использовался для backspace ).

Вы услышите звуковой сигнал со встроенного динамика вашего ПК (а не внешние громкоговорители или наушники, которые вы, возможно, подключили).

\a фактически вызывает системный звонок. Это escape-последовательность для символа BEL ASCII.

\ a – представление C символа управления звуковым предупреждением ASCII («звонок»). На последовательном терминале старой школы вывод этого персонажа произвел звуковой сигнал. Эмулятор терминала может или не может реализовать эту функцию.

Попробуйте что-то более простое:

 printf("hello\tworld"); printf("hello\nworld"); 

и посмотреть, что произойдет.

Ваш пример с символом BELL, как указывали другие, вероятно, не будет работать на сегодняшних тостерах ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H компьютеров; большинство терминалов перенаправляют символ «звонок», чтобы либо отменить, либо кратковременно мигнуть терминал.

И поверьте мне, вы хотите сохранить его таким образом для сеансов ночного кодирования 🙂

Помимо всех полученных ответов, учтите, что ваша программа, вероятно, не будет компилироваться. Вот фиксированная версия:

 #include  #include  int main() { printf("\a"); return EXIT_SUCCESS; } 

Самое важное изменение заключается в том, что заголовки систем должны быть защищены с помощью <и> вместо кавычек. Кроме того, лучше знать, что функция main () всегда возвращает int (в операционную систему) и что этот int кодируется в двух константах: EXIT_SUCCESS и EXIT_FAILURE, в заголовке stdlib.h

Строки могут содержать символы, которые обрабатываются, отличные от всех других символов. Наиболее часто используемым является '\n' . Символ '\n' не печатает символ в консоли, а указывает консоли на запуск новой строки. Такие специальные символы называются непечатаемыми, поскольку они не имеют собственного видимого представления в c и вместо этого должны использовать escape-последовательности.

В escape-последовательности "\a" обратная косая черта перед а сообщает компилятору, что a является идентификатором для специального символа и будет хранить свое значение char вместо значения char для 'a' .

'\a' A '\a' escape-последовательность – это звуковой символ колокола, передающий этот символ на консоль с помощью print (), который должен вызывать звуковой сигнал. Некоторые консоли не подают звуковой сигнал.

Вот некоторые специальные символы, ссылка взята из c ++-ссылки, но большинство из них должны быть действительны для c.

Вышеупомянутая программа, которую вы написали, я пробовал в блоках кода с использованием компилятора GNU GCC.

Он работал нормально ..

Если вы хотите услышать звуковой сигнал, вы можете попробовать его по-другому, он будет полезен только в Windows!

 #include #include main() { Beep(600,600); /* you have to enter both the values whatever you want } 

Интересно, что это похоже на работу во всех assemblyх, в которых нет точки входа wWinMain или WinMain. wprintf(L"\a") отлично подходит для Unicode-сборок. (Win 7 здесь).

Динамик ПК использовался, чтобы зависеть от «speaker.drv», но эта маленькая красота была отнята некоторое время назад и заменена на beep.sys, который теперь перемещается в звуковой агент системы пользовательского режима .

Включение и отключение динамика из командной строки также обсуждается здесь .

 #include int main() { int i = 263; putchar(i); // or you can directly use putchar(263); return 0; } 

Эта программа создает звуковой сигнал, когда вы находитесь на экране вывода

  • Gcc автоматически инициализирует статические переменные до нуля?
  • Как установить условную точку останова в Xcode на основе свойства объекта?
  • Как я могу исправить предупреждения типа «сравнение между подписанным и неподписанным»?
  • Попробовать команды catch в C
  • Правильный способ передачи 2-мерного массива в функцию
  • Возвращаемое значение оператора «==» в C
  • возвращая несколько значений из функции
  • Как указатель на указатели работает в C?
  • Альтернативный (K & R) C синтаксис для объявления функции против прототипов
  • Является ли fmod () точным, когда y является целым числом?
  • Переменные экземпляра для объектов Objective C
  • Давайте будем гением компьютера.