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

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

#include "stdio.h"

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

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

33
задан Sharifhs 11 August 2010 в 07:17
поделиться

9 ответов

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

49
ответ дан 27 November 2019 в 17:34
поделиться

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

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

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

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

21
ответ дан 27 November 2019 в 17:34
поделиться

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

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

10
ответ дан 27 November 2019 в 17:34
поделиться

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

6
ответ дан 27 November 2019 в 17:34
поделиться

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

5
ответ дан 27 November 2019 в 17:34
поделиться

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

2
ответ дан 27 November 2019 в 17:34
поделиться

Попробуйте что-нибудь попроще:

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

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

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

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

2
ответ дан 27 November 2019 в 17:34
поделиться

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

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

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

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

.
3
ответ дан 27 November 2019 в 17:34
поделиться

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

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

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

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

2
ответ дан 27 November 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: