ANSI C 7

ANSI C 7



DODATEK A PRZEWODNIK JĘZYKA C-------

czaj umieszczane w oddzielnych wierszach; w kilku przypadkach liczny zbiór krótkich alternatyw umieszczono w jednym wierszu i opatrzono zwrotem „jeden z”. Symbole terminalne i nieterminalne, które można pominąć, zostały oznaczone przyrostkiem opc\ zapis

{ wyraienieopc }

oznacza więc opcjonalne wyrażenie ujęte w klamry. Pełną składnię języka podano w p. A13.

W przeciwieństwie do gramatyki zamieszczonej w pierwszym wydaniu książki, w niniejszej gramatyce wyraźnie zaznaczono pierwszeństwo i łączność operatorów w wyrażeniach.


Znaczenie identyfikatorów

Identyfikatory (nazwy) odnoszą się do różnych rzeczy: funkcji; etykietek struktur, unii i wyliczeń; składowych struktur i unii; stałych wyliczeń; nazw typów (typedef) i obiektów. Obiekt, zwany też zmienną, jest miejscem w pamięci; jego interpretacja opiera się na dwóch podstawowych atrybutach: klasie pamięci i typie. Klasa pamięci decyduje o żywotności pamięci związanej z identyfikowanym obiektem; typ nadaje znaczenie wartości obiektu. Nazwa ma także zasięg - tę część programu, w której jest ona znana, oraz łączność - która określa, czy ta sama nazwa z innym zasięgiem odnosi się do tego samego obiektu lub funkcji czy nie. Zasięg i łączność są omówione w p. Al 1.

A4.1 Klasy pamięci

Istnieją dwie klasy pamięci: automatyczna i statyczna. Klasę pamięci obiektu określa kilka słów kluczowych razem z kontekstem zawierającym deklarację obiektu. Obiekty automatyczne są lokalne w bloku (p. A9.3) i znikają, gdy sterowanie opuści blok. Deklaracje zawarte wewnątrz bloku tworzą obiekty automatyczne, jeśli nie podano specyfikacji klasy pamięci lub użyto specyfikatora auto. Obiekty zadeklarowane jako register są automatyczne i są umieszczane (jeśli to możliwe) w szybkich rejestrach maszyny.

Obiekty statyczne mogą być lokalne dla bloku lub zewnętrzne dla wszystkich bloków: w każdym jednak przypadku zachowują swoje wartości po opuszczeniu i ponownym wejściu do funkcji lub bloku. Wewnątrz bloku (również bloku tworzącego treść funkcji) obiekty statyczne deklaruje się za pomocą słowa static. Obiekty zadeklarowane

na zewnątrz wszystkich bloków, na tym samym poziomie co definic wsze statyczne. Można je uczynić wewnętrznymi dla danej jednostki kompilacji za pomocą słowa kluczowego Static; to nadaje im łączność wewnętrzną. Obiekty stają się globalne dla całego programu, gdy ominie się specyfikację klasy pamięci lub zastosuje słowo kluczowe extem; to nadaje im łączność zewnętrzną.

A4.2 Typy podstawowe

Wyróżnia się kilka podstawowych typów danych. Opisany w dodatku B standardowy nagłówek <limits.h> definiuje największe i najmniejsze wartości dla tych typów w lokalnej implementacji. Liczby podane w dodatku B pokazują najmniejsze dopuszczalne wielkości.

Obiekty zadeklarowane jako znakowe (char) są dostatecznie duże, aby pomieścić dowolny element zbioru znaków danej instalacji. Wartość obiektu znakowego, do którego wstawiono naturalny znak z tego zbioru, jest nieujemną liczbą całkowitą równą wartości kodu tego znaku. Do zmiennych znakowych można wstawiać także inne wartości, ale zakres tych wartości, a zwłaszcza to, czy mają znak arytmetyczny, zależy od implementacji.

Obiekty zadeklarowane jako unsigned char zajmują tyle samo miejsca, co zwykłe znaki, są jednak zawsze nieujemne; obiekty zadeklarowane jako signed char także zajmują tyle samo miejsca, co zwykłe znaki.

Typ unsigned char nie występował w pierwszym wydaniu książki, ale jest w powszechnym użyciu. Typ signed char jest nowy.

Oprócz obiektów typu char są jeszcze obiekty całkowite o trzech różnych długościach deklarowanych jako: short int (krótka), int (zwykła) i long int (długa). Zwykłe wielkości całkowite mają naturalny rozmiar wynikający z architektury danej maszyny; pozostałe rozmiary wprowadzono dla zaspokojenia szczególnych potrzeb. Dłuższe obiekty całkowite zajmują co najmniej tyle pamięci, co krótsze, ale w konkretnej implementacji zwykłe obiekty całkowite mogą być utożsamione albo z krótkimi obiektami, albo z długimi. Jeśli nie powiedziano inaczej, wszystkie odmiany typu int reprezentują wartości całkowite ze znakiem.

Obiekty całkowite bez znaku, deklarowane jako unsigned, podlegają regułom arytmetyki modulo 2", gdzie n jest liczbą bitów ich reprezentacji; w arytmetyce na wielkościach bez znaku nie może więc wystąpić nadmiar. Zbiór nieujemnych wartości, które można wstawić do obiektu ze znakiem, stanowi podzbiór zbioru wartości, które można wstawić do odpowiedniego obiektu bez znaku; reprezentacja pokrywających się wartości jest taka sama.

17 — Język ANS! C 257


Wyszukiwarka

Podobne podstrony:
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C__________ rekurencyjnie, podskładowych nie może być kwalifi
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C______ Etykiety przypadków (case) i domyślne (default) są uż
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C___ nazwa-typu: lista-spec-kwal
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C_________A2.1 Jednostki leksykalne Istnieje sześć klas jedno
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____.____A2.5.2 Stałe znakowe Stała znakowa jest ciągiem zł
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA C_________ Wszystkie z typów zmiennopozycyjnych: pojedynczej
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C_______—- Gdy wartość całkowita jest przekształcana do typu
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C_________ Obiekt typu całkowitego można jawnie przekształcić
ANSI C 1 DODATEK A PRZEWODNIK JĘZYKA C Implementacje różnią się reakcjami na dzielenie przez zero
ANSI C 2 DODATEK A PRZEWODNIK JĘZYKA C W pierwszym wydaniu książki typ wyrażenia przyrostkowego by
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C_______ wynikiem jest 1; jeśli odnosi się do tablicy, to wyn
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA CA7.8 Operatory przesunięcia Operatory przesunięcia « i » są
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____ Wynikiem tej operacji jest bitowa różnica symetryczna
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C________■ Kwalifikatory typu wskazują specjalne właściwości
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C ___——- łujących się do samych siebie: struktura lub unia mo
ANSI C 1 DODATEK A PRZEWODNIK JĘZYKA C union { struct { int type; ł n; struct { int type
ANSI C 2 DODATEK A PRZEWODNIK JĘZYKA CA8.6 Znaczenie deklaratorów Lista deklaratorów pojawia się p
ANSI C 3 DODATEK A PRZEWODNIK JĘZYKA C____- tablicą o pięciu elementach, z których każdy jest tabl

więcej podobnych podstron