Literał znakowy – literał reprezentujący w kodzie źródłowym konkretną wartość typu znakowego.

Reprezentacja literału znakowego Literał znakowy to określona jednostka leksykalna danego języka programowania, która reprezentuje wartość wybraną z dostępnego zestawu znaków. To jakie literały znakowe mogą zostać użyte, a więc jaki jest dostępny zestaw znaków, zależy od systemu komputerowego i ustawień w nim zawartych. Przykładowymi zestawami znaków są ASCII, EBCDIC. Obecnie we współczesnych systemach dostępne są różne zestawy (np. Unicode) zawierające m.in. znaki narodowe i różne symbole, np. matematyczne.

Literał znakowy może być zapisany w kodzie źródłowym: bezpośrednio, za pomocą danego znaku, zazwyczaj ujęty w odpowiednie ograniczniki, np. język C: 'C', '7', '*'; za pomocą symbolu, specjalnego kodu (np. kodu sterującego), opisu znaku, np. język C: '\n', '\\'; język Pascal: ^N; za pomocą kodu liczbowego, zgodnego z bieżącym zestawem znaków, np. język C: '\47', '\xFC', język Pascal: #10, #$A.

Literał znakowy a inne literały W danym języku programowania zwykle obok literału znakowego występuje literał łańcuchowy, przy czym składnia różnych języków jest tak skonstruowana, że: literał znakowy jest zapisywany inaczej niż literał łańcuchowy, np. język C: literał znakowy w apostrofach, np. 'a', literał łańcuchowy w cudzysłowach, np. "a", literał znakowy i łańcuchowy jest zapisywany tak samo, np. język Pascal: literał znakowy w apostrofach, np. 'a', literał łańcuchowy również w apostrofach, np. 'a'. W tym drugim przypadku interpretacja, czy dana jednostka leksykalna jest literałem znakowym czy łańcuchowym, zależy od kontekstu, w którym dany literał został zapisany i nie da się rozróżnić literału znakowego od jednoznakowego literału łańcuchowego na podstawie samego zapisu literału. Np. w języku Pascal, w instrukcji przypisania x:='a'; to czy literał 'a' jest literałem znakowym czy łańcuchowym wynika z kontekstu – w tym przypadku typu zmiennej x (np. w Turbo Pascalu, jeżeli zmienna x jest typu znakowego to literał 'a' jest literałem znakowym zajmującym 1 bajt; jeżeli x jest typu string to literał 'a' reprezentuje łańcuch zapisany jako: 1 bajt długość łańcucha równa 1 i znak łańcucha – drugi bajt).

Literały znakowe mogą być: traktowane jak dane liczbowe całkowite, o wartości zgodnej z kodem danego znaku według aktualnego zestawu znaków, np. język C: x=5+'a'; natomiast użycie literału znakowego jak łańcucha wymaga odpowiedniego przekształcenia lub konwersji, traktowane jak łańcuchy jednoznakowe, co umożliwia operowanie literałami znakowymi i łańcuchami równocześnie, np. Pascal, x:='Ala' + '.'; wynika z jednolitego zapisu i kontekstowej interpretacji literału (patrz wyżej); natomiast użycie literału znakowego jak liczby całkowitej wymaga konwersji lub użycia odpowiedniej funkcji.

Literały znakowe w językach programowania język programowania bezpośredni zapis literału znakowego zapis za pomocą opisu znaku zapis za pomocą kodu znaku miejsce opisu lub kodu względem ograniczników przykłady Język C 'znak' '\opis_znaku' '\kod_ósemkowy' pomiędzy ogranicznikami 'a', '\n', '\12' Język C – rozszerzenia ANSI traktowane jak dane int (2 bajty), możliwość zapisu dwóch znaków 'ab' jw. możliwość stosowania także kodów szesnastkowych '\xkod_szesnastkowy' pomiędzy ogranicznikami 'zn', 'a\n', '\12\xFA' Icon 'znak' '\opis_znaku' --- wewnątrz 'a', '\n' uwaga: w języku Icon literał znakowy jest tylko szczególnym przypadkiem zapisu zbioru znaków (jednoelementowym zbiorem znaków) Modula 2 'znak', "znak" --- kod_ósemkowyC bez ograniczników 'a', 12C Pascal 'znak' ^znak_sterujący #kod_dziesiętny, #$kod_szesnastkowy bez ogranicznika 'a', #10, #$FA, ^z, PL/M 'znak' --- kod_dec, kod_binB, kod_octQ, kod_octO kod_hexH bez ograniczników 'a', 1AH

Zobacz też literał literał bitowy literał łańcuchowy literał liczbowy literał logiczny literał pusty literał zbiorowy jednostka leksykalna

Przypisy Podręcznik języka C na Wikibooks

Kategoria:Konstrukcje programistyczne