DODATEK A PRZEWODNIK JĘZYKA C_____.____
Stała znakowa jest ciągiem złożonym z jednego lub więcej znaków, zawartym w apostrofach, np. ’x\ Wartością stałej znakowej zawierającej tylko jeden znak jest numeryczna wartość tego znaku w zbiorze znaków maszyny wykonującej program. Wartość stałej wieloznakowej zależy od implementacji.
Stałe znakowe nie zawierają apostrofów i znaków nowego wiersza; dla wyrażenia tych oraz kilku innych znaków można stosować następujące sekwencje specjalne:
nowy wiersz |
NL(LF) |
\n |
kreska ukośna w lewo |
\ |
W |
tabulacja pozioma |
HT |
\t |
znak zapytania |
? • |
\? |
tabulacja pionowa |
VT |
\v |
apostrof |
V |
V |
cofanie |
BS |
\b |
cudzysłów |
99 |
\” |
powrót karetki |
CR |
\r |
liczba ósemkowa |
ooo |
\ooo |
nowa strona |
FF |
\f |
liczba szesnastkowa |
hh |
\xhh |
alarm |
BEL |
\a |
Sekwencja \ooo składa się ze znaku \, po którym następuje jedna, dwie lub trzy cyfry ósemkowe określające wartość żądanego znaku. Szczególnym przypadkiem takiej sekwencji jest \0 (bez dalszych cyfr) reprezentujące znak NUL. Sekwencja \ xJih składa się ze znaku \, litery x i ciągu cyfr szesnastkowych określających wartość znaku. Nie ma ograniczenia dotyczącego liczby cyfr, ale wynik nie jest zdefiniowany, jeżeli otrzymana wartość przekracza wartość największego znaku. Jeśli w danej implementacji typ char jest traktowany jak typ ze znakiem arytmetycznym, to bit znaku w ósemkowych i szesnastkowych sekwencjach specjalnych jest powielany tak samo, jak przy rzutowaniu do typu char. Wynik nie jest zdefiniowany, jeśli znak następujący po \ nie jest żadnym z wymienionych znaków.
W niektórych implementacjach istnieje rozszerzony zbiór znaków, który nie może być reprezentowany przez typ char. Zapis stałych z tego rozszerzonego zbioru poprzedza się literą L, np. L’x’. Stałe te nazywa się rozszerzonymi stałymi znakowymi. Mają one typ wchar_t - typ całkowity zdefiniowany w standardowym nagłówku <Stddef.h>. Podobnie jak w przypadku zwykłych stałych znakowych, można tu również stosować ósemkowe i szesnastkowe sekwencje specjalne; wynik nie jest zdefiniowany, jeśli wskazana wartość przekracza możliwości typu wchar_t.
Niektóre z sekwencji specjalnych są nowe, w szczególności szesnastkowa reprezentacja znaków. Rozszerzone znaki są także nowe. Zbiory znaków stosowane powszechnie w Ameryce i zachodniej Europie mogą być żako-dowane w typie char; głównym powodem wprowadzenia typu wcharJ było dopasowanie się do języków azjatyckich.
A3 NOTACJA OPISU SKŁADNI —
A2.5.3 Stałe zmiennopozycyjne
Stała zmiennopozycyjna składa się z części całkowitej, kropki dziesiętnej, części ułamkowej, litery e lub E, wykładnika potęgi (być może ze znakiem) i opcjonalnego przyrostka typu (f, F, I lub L). Część całkowita i ułamkowa są ciągami cyfr. Część całkowitą albo część ułamkową (ale nie obie jednocześnie) można pominąć. Można także pominąć kropkę dziesiętną lub część wykładniczą wraz z literą e (ale nie obie naraz). Typ stałej wyznacza przyrostek: f lub F oznacza float, I lub L oznacza long double, brak przyrostka oznacza double.
Przyrostki w stałych zmiennopozycyjnych są nowe.
Identyfikatory zadeklarowane jako wyliczniki (patrz p. A8.4) są stałymi typu int.
Napis (stała napisowa) jest ciągiem znaków ujętym w znaki cudzysłowu, np. Typem napisu jest „tablica znakowa”, a klasą pamięci - Static (patrz p. A4). Jego wartością jest dany ciąg znaków. Od implementacji zależy, czy rozróżnia się identyczne napisy. Zachowanie się programu, który próbuje modyfikować napisy, nie jest zdefiniowane.
Sąsiadujące ze sobą napisy są łączone w jeden napis. Po ewentualnych połączeniach, na koniec napisu jest dopisywany znak zerowy \0, aby program przeglądający tekst mógł znaleźć jego koniec. Napisy nie zawierają znaków cudzysłowu i znaków nowego wiersza. Do wyrażenia tych znaków można stosować te same sekwencje specjalne, co w stałych znakowych.
Podobnie jak w przypadku stałych znakowych, napisy złożone z rozszerzonych znaków poprzedza się literą L, np. L”...”. Mają one typ „tablica elementów typu wchar_t”. Łączenie normalnych i rozszerzonych napisów nie jest zdefiniowane.
Zastrzeżenie, że identyczne napisy mogą nie być rozróżniane, zakaz modyfikowania napisów, jak również łączenie sąsiadujących napisów są nowe w ANSI C. Rozszerzone napisy są nowe.
W opisie składni, stosowanym w przewodniku, kategorie składniowe wyróżnia się kur-sywą, a słowa i znaki języka C pismem specjalnym. Alternatywne kategorie są zazwy-
255