Подтвердить что ты не робот

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

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

#include "stdio.h"

main()
{
 printf("\a");
}

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

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

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

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

Ответ 8

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

#include <stdio.h>
#include <stdlib.h>

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

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

Ответ 9

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

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

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

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

Ответ 10

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

Он отлично работал.

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

#include<stdio.h>
#include<windows.h>
main()
{
Beep(600,600) /* you have to enter both the values whatever you want
}

Ответ 11

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

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

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