ANSI C 7

ANSI C 7



DODATEK A PRZEWODNIK JĘZYKA C__________

rekurencyjnie, podskładowych nie może być kwalifikowana słowem const. Typem wyrażenia przypisania jest typ lewego argumentu, a wynikiem - wartość wstawiona do tego argumentu po wykonaniu przypisania.

Przy prostym przypisaniu z operatorem = wartość wyrażenia zastępuje poprzednią wartość obiektu wskazanego przez 1-wartość. Musi być spełniony jeden z poniższych warunków: oba argumenty są arytmetyczne i prawy jest przekształcany do typu lewego; oba są strukturami lub uniami tego samego typu; jeden z argumentów jest wskaźnikiem, a drugi wskaźnikiem do typu void; lewy argument jest wskaźnikiem, a drugi wyrażeniem stałym o wartości 0; oba argumenty są wskaźnikami do funkcji lub do obiektów tego samego typu (typy obu wskaźników mogą się różnić jedynie brakiem słów kluczowych const i volatile w deklaracji prawego argumentu).

Wyrażenie o postaci E1 op= E2 jest równoważne z wyrażeniem E1 = E1 op (E2), z tym tylko, że wyrażenie E1 jest obliczane raz.

A7.18 Operator przecinkowy

wyrażenie:

wyraienie-przypisania wyrażenie , wyrażenie-przypisania

Parę wyrażeń oddzielonych przecinkami oblicza się od lewej strony do prawej, przy czym wartość lewego wyrażenia przepada. Typ i wartość wyniku są takie same, jak typ i wartość prawego argumentu. Zanim rozpocznie się obliczanie prawego argumentu, wszystkie efekty uboczne obliczenia lewego argumentu są już zakończone. W kontekście, w którym przecinek ma znaczenie specjalne, na przykład na liście argumentów funkcji (p. A7.3.2) lub liście inicjatorów (p. A8.7), wymaganą jednostką składniową jest wyrażenie przypisania, zatem operator przecinkowy może wystąpić wyłącznie w wyrażeniu ujętym w nawiasy. Na przykład w wywołaniu funkcji

f (a, (t=3, t+2), c)

występują trzy argumenty; drugi argument ma wartość 5.

A7.19 Wyrażenia stałe

Wyrażenie stałe jest składniowo równoważne z wyrażeniem o ograniczonym repertuarze operatorów.

wyrażenie-stałe:

wyrażenie-warunkowe

A8 DEKLARACJE

I powered by I

j Misio! |


Wyrażenia, które sprowadzają się do stałych, są wymagane w kilku słowie case, jako rozmiar tablicy, jako długość pola bitowego, jako wartość stałej wyliczenia, w inicjatorach i w niektórych wyrażeniach dła preprocesora.

Wyrażenia stałe nie mogą zawierać operatorów przypisania, zwiększania i zmniejszania, wywołań funkcji i operatorów przecinkowych, chyba że występują w argumencie operatora sizeof. Jeśli jest wymagane stałe wyrażenie całkowite, to jego argumenty muszą być stałymi: całkowitymi, wyliczeń, znakowymi lub zmiennopozycyjnymi; w rzutowaniach muszą wystąpić typy całkowite, a każdą stałą zmiennopozycyjną należy zrzutować do liczby całkowitej. Siłą rzeczy są wyeliminowane tablice, adresowanie pośrednie, pobieranie adresu i odwołania do składowych struktur. (Argumenty operatora sizeof mogą być jednak dowolne.)

Więcej swobody dopuszcza się w wyrażeniach stałych dla inicjatorów: argumenty mogą być stałymi dowolnego typu; jednoargumentowy operator adresu & może być stosowany do obiektów zewnętrznych lub statycznych, jak również do zewnętrznych lub statycznych tablic indeksowanych wyrażeniem stałym. Ten operator może być również stosowany niejawnie, przez użycie funkcji lub nieindeksowanych tablic. Inicjatory muszą się sprowadzać albo do wartości stałej, albo do adresu uprzednio zadeklarowanego obiektu zewnętrznego lub statycznego (plus/minus stała).

Mniej swobody jest w wyrażeniach stałych po #if: nie dopuszcza się wyrażeń z operatorem sizeof, stałych wyliczeń i rzutowania. Patrz p. A12.5.


Deklaracje

Deklaracje określają sposób interpretacji identyfikatorów, nie zawsze jednak rezerwują pamięć związaną z identyfikatorami. Deklaracje, które rezerwują pamięć, nazywają się definicjami. Deklaracje mają postać:

deklaracja:

specyfikatory-deklaracji inicjowana-lista-deklaratorów0f)c ;

Deklarowane identyfikatory umieszcza się na inicjowanej liście deklaratorów; specy-fikatory deklaracji składają się z ciągu specyfikatorów typu i klasy pamięci:

specyfikatory-deklaracji:

specyfikator-klasy-pamięci specyfikatory-deklaracjiopc specyfikator-typu specyfikatory-deklaracjiopc kwalifikator-typu specyfikatory-deklaracjiątc

277


Wyszukiwarka

Podobne podstrony:
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C------- czaj umieszczane w oddzielnych wierszach; w kilku pr
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 8 DODATEK A PRZEWODNIK JĘZYKA C stałe przypadków są różne od wartości wyrażenia i nie wystę
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C____A12.9 Pusta instrukcja preprocesora Wiersz zawierający j
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

więcej podobnych podstron