ANSI C 8

ANSI C 8



DODATEK A PRZEWODNIK JĘZYKA C_________

Wszystkie z typów zmiennopozycyjnych: pojedynczej (float), podwójnej (double) i rozszerzonej precyzji (long double) mogą być utożsamione, przy tym każdy następny typ z tej listy jest co najmniej tak precyzyjny, jak poprzedni.

Typ long double jest nowy. Konstrukcja long float, w poprzednim wydaniu książki stosowana jako synonim double, została usunięta.

Wyliczenia są unikalnymi typami o wartościach całkowitych; z każdym wyliczeniem jest związany zbiór nazwanych stałych (p. A8.4). Wyliczenia zachowują się jak typy całkowite, przy czym kompilatory produkują zwykle komunikaty ostrzegawcze, jeśli jakiemuś obiektowi o typie wyliczeniowym przypisuje się wartość inną niż wartość jednej z jego stałych lub wyrażenia tego typu.

Ponieważ obiekty powyższych typów mogą być traktowane jak liczby, typy te będziemy nazywali arytmetycznymi. Typy char i int wszystkich rozmiarów (ze znakiem lub bez), a także wyliczenia będą wspólnie nazywane całkowitymi. Typy float, double i long double będą nazywane zmiennopozycyjnymi.

Typ void reprezentuje pusty zbiór wartości. Jest on używany jako typ funkcji, która nie produkuje wartości-.

A4.3 Typy pochodne

Oprócz typów podstawowych mamy potencjalnie nieskończoną klasę typów pochodnych, konstruowanych z typów podstawowych:

tablice obiektów danego typu,

funkcje zwracające wartości danego typu,

wskaźniki do obiektów danego typu,

struktury zawierające zestawy obiektów różnych typów,

unie zawierające dowolny z zestawu obiektów o różnych typach.

Podane metody konstruowania obiektów mogą być na ogół stosowane rekurencyjnie.

A4.4 Kwalifikatory typów

Z typem obiektu mogą być związane kwalifikatory. Deklarując obiekt jako const wskazujemy, że ten obiekt nie będzie zmieniał wartości; deklarując go jako volatile wskazujemy, że będzie miał specjalne właściwości, ważne przy optymalizacji. Kwalifikatory nie mają wpływu ani na zakres wartości, ani na arytmetyczne właściwości obiektów. Kwalifikatory zostaną omówione w p. A8.2.

A także do oznaczenia pustej listy parametrów w nowej postaci deklaracji funkcji. - Przyp. tłum.

Obiekty i l-wartości


Obiekt jest nazwanym obszarem pamięci; L-wartość (ang. lvalue) jest wyrażeniem odnoszącym się do obiektu. Oczywistym przykładem l-wartości jest identyfikator o odpowiednim typie i klasie pamięci. Również niektóre operatory dają l-wartość: na przykład, jeśli E jest wyrażeniem wskaźnikowym, to *E jest 1-wartością odnoszącą się do obiektu wskazywanego przez E. Nazwa „l-wartość" wywodzi się z wyrażenia przypisania E1=E2, w którym lewy argument musi być l-wartością. Przy omawianiu poszczególnych operatorów zaznaczono, czy dany operator spodziewa się l-wartości jako argumentu i czy w wyniku daje l-wartość.


Przekształcenia typów

W zależności od argumentów niektóre operatory mogą powodować przekształcenie wartości pewnego argumentu z jednego typu do innego. W tym punkcie wyjaśnimy, jakich wyników należy się spodziewać po takich przekształceniach. Podsumowanie przekształceń wymaganych przez większość zwykłych operatorów nastąpi w p. A6.5; jeśli zajdzie taka potrzeba, to będzie ono uzupełnione przy opisie poszczególnych operatorów.

A6.1 Promocja typu całkowitego

W każdym wyrażeniu, w którym może wystąpić wartość całkowita, mogą również wystąpić: znak, wartość całkowita krótka lub całkowite pole bitowe (wszystkie ze znakiem arytmetycznym lub bez) oraz obiekt typu wyliczeniowego. Jeśli typ int może reprezentować wszystkie wartości oryginalnego typu, to dana wartość jest przekształcana do typu int; w przeciwnym przypadku tę wartość przekształca się do typu unsigned int. Ten proces nazywa się promocją typu całkowitego.

A6.2 Przekształcenia całkowite

Dowolna wielkość całkowita jest przekształcana do danego typu bez znaku przez znalezienie takiej najmniejszej nieujemnej wartości, która jest przystająca (kongruentna) do tej wielkości całkowitej modulo największa wartość reprezentowalna w danym typie zwiększona o 1. W notacji uzupełnieniowej do 2 oznacza to obcięcie bitów z lewej strony, jeśli typ bez znaku jest krótszy, albo uzupełnienie zerami wartości bez znaku lub powielenie bitu znaku wartości ze znakiem, jeśli typ bez znaku jest dłuższy.

259


Wyszukiwarka

Podobne podstrony:
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA C stałe przypadków są różne od wartości wyrażenia i nie wystę
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA C ______ wyrażenie-XOR: wy rażenie-AND wyraż.enie-XOR ~ wy
ANSI C 1 DODATEK A PRZEWODNIK JĘZYKA C Implementacje różnią się reakcjami na dzielenie przez zero
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 7 DODATEK A PRZEWODNIK JĘZYKA C------- czaj umieszczane w oddzielnych wierszach; w kilku pr
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 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 7 DODATEK A PRZEWODNIK JĘZYKA C__________ rekurencyjnie, podskładowych nie może być kwalifi
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