2011-01-15 10 views
5

dzisiaj, kiedy pracowałem nad jakimś kodem, natrafiłem na sygnał dźwiękowy podczas drukowania bufora na ekranie. Oto tajemnicza postać, która daje sygnał: „” Nie wiem, czy można go zobaczyć, ale mój komputer wydaje sygnały dźwiękowe gdy próbuję wydrukować go tak:Dziwny dźwięk podczas używania cout

cout<<(char)7<<endl; 

Kolejnym punktem zainteresowania jest to, że "Sygnał dźwiękowy" nie pochodzi z mojego brzęczyka na pokładzie, ale z mojego słuchawki/głośnika

Czy to tylko mój komputer, czy coś nie tak z funkcją cout?

EDIT:

Ale dlaczego ta postać drukowania produkować sygnał dźwiękowy? Czy to oznacza, że ​​mogę wysyłać inne takie postacie za pomocą funkcji cout, aby uzyskać różne efekty?

+3

Czekam na linię ciosów ... Kod ASCII 7 to dźwięk systemowy (Control-G). – tawman

+1

Prawdopodobnie w twoim zestawie kart dźwiękowych masz prawdopodobnie ustawienie "Zestaw głośników". Jeśli je wyłączysz, powinieneś usłyszeć 0x7 w sposób, w jaki miał być słyszany, jako nieprzyjemnie głośną piłokształtną falę pochodzącą z najtańszego głośnika, jaki mógł znaleźć twój producent komputera. – Seth

Odpowiedz

12

W ASCII znak 7 jest znakiem "dzwonkowym", który sygnalizuje terminalowi, że powinien wydać dźwięk.

EDYCJA: Aby odpowiedzieć na twoje pytanie, to tak naprawdę z przyczyn historycznych. Stare terminale teletropowe potrzebowały sposobu, aby powiadomić operatora przychodzącej wiadomości, aby dzwon był używany. Dzwonkowy charakter powiedział terminalowi, żeby zadzwonił dzwonkiem, a nie wydrukował znak.

Nowoczesne emulatory terminali robią zasadniczo to samo, chociaż zwykle mają opcję zastąpienia sygnału dźwiękowego dzwonkiem wizualnym.

+0

Byłeś pierwszy, więc dostaniesz – Unknown

3

char 7 to kod ASCII dla BELL. Zapisanie tego znaku na konsoli powoduje, że komputer emituje sygnał dźwiękowy. To jest całkowicie normalne.

12

0x7 to znak ASCII, który generuje dźwięk "bip". Jest to postać niedrukowalna. Oto pełna lista znaków ASCII i ich kodów: http://www.asciitable.com/

Edytuj: Dźwięk może być używany do prawdziwego melanżu rzeczy. Jednak naprawdę nie można uzyskać innych efektów, przesyłając inne dane. W tabeli w linku powyżej czegokolwiek na liście poniżej 0x20 (32 dziesiętne) jest znakiem niedrukowalnym. Mogą mieć różne efekty w zależności od tego, gdzie faktycznie dane są wyprowadzane.

Zasadniczo wystarczy napisać pętlę, aby wyprowadzić 0- (bez względu na to, na którą liczbę chcesz się zatrzymać), aby eksperymentować i zobaczyć, co można uzyskać.

+1

+1 za istną melanż. –

3

czat 7 to właściwie znak "beep", a nie znak ekranowy. Chociaż czasami dokumentacja może pokazywać postać, zazwyczaj nie jest to coś, co można renderować wizualnie.