ANSI C 5

ANSI C 5



DODATEK A PRZEWODNIK JĘZYKA C

A7.8 Operatory przesunięcia

Operatory przesunięcia « i » są lewostronnie łączne. Ich argumenty muszą być całkowite i podlegają promocji typu całkowitego. Typem wyniku jest promowany typ lewego argumentu. Wynik nie jest zdefiniowany, jeśli prawy argument jest ujemny, a także jeśli jest większy lub równy liczbie bitów w typie lewego argumentu.

wyraienie-przesunięcia:

wyraienie-addytywne

wyraienie-przesunięcia « wyraienie-addytywne wyraienie-przesunięcia » wyraienie-addytywne

Wartością E1«E2 jest E1 (traktowane jako wzorzec bitowy) przesunięte w lewo o E2 bitów; jeśli nie ma nadmiaru, jest to równoważne pomnożeniu przez 2E2. Wartością E1»E2 jest E1 przesunięte w prawo o E2 bitów. Jeżeli E1 jest bez znaku lub jest nieujemne, to przesunięcie w prawo jest równoważne z dzieleniem przez 1E2w pozostałych przypadkach wynik zależy od implementacji.

A7.9 Operatory relacji

Operatory relacji są lewostronnie łączne, ale fakt ten nie jest specjalnie użyteczny: wyrażenie a<b<c jest gramatycznie równoważne z wyrażeniem (a<b)<c, w którym a<b ma wartość 0 lub 1.

wyraienie-relacyjne:

wyraienie-przesunięcia wyraienie-relacyjne < wyraienie-przesunięcia wyraienie-relacyjne > wyraienie-przesunięcia wyraienie-relacyjne <= wyraienie-przesunięcia wyraienie-relącyjne >= wyraienie-przesunięcia

Wszystkie operatory: < (mniejsze niż), > (większe niż), <= (mniejsze lub równe) i >= (większe lub równe) dają w wyniku 0, jeżeli wskazana relacja jest fałszywa, bądź 1 - jeżeli prawdziwa. Typem wyniku jest int. Argumenty arytmetyczne podlegają zwykłym przekształceniom arytmetycznym. Można porównywać dwa wskaźniki do obiektów tego samego typu (nie licząc kwalifikatorów) - wynik zależy od względnego położenia wskazywanych obiektów w przestrzeni adresowej. Porównywanie wskaźników jest określone tylko dla wskaźników pokazujących fragmenty tego samego obiektu: jeśli dwa wskaźniki pokazują na ten sam prosty obiekt, to są sobie równe; jeśli pokazują na składowe tej samej struktury, to wskaźnik pokazujący składową później zadeklarowaną w strukturze jest uważany za większy; jeśli pokazują

A7 WYRAŻENIA


na składowe tej samej unii, to są równe; jeśli wskazują elementy tej sam porównanie wskaźników jest równoważne z porównaniem odpowiednich indeksów tablicy. Jeśli P wskazuje ostatni element tablicy, to P+1 jest większy niż P, chociaż p+1 pokazuje poza tablicę. W pozostałych przypadkach porównywanie wskaźników nie jest zdefiniowane.

Powyższe reguły liberalizują nieco ograniczenia podane w pierwszym wydaniu książki - dopuszcza się porównywanie wskaźników wskazujących na różne składowe struktur i unii. Reguły te legalizują także porównywanie ze wskaźnikiem wskazującym tuż za koniec tablicy.

A7.10 Operatory przyrównania

wyraienie-przyrównania:    •    

wyraienie-relacyjne

wyraienie-przyrównania == wyraienie-relacyjne wyraienie-przyrównania ! = wyraienie-relacyjne

Operatory == (równe) i != (nie równe) są podobne do operatorów relacji z tym, że mają niższy priorytet. (Zatem a<b == c<d daje w wyniku 1, gdy obie relacje a<b oraz c<d mają tę samą wartość logiczną.)

Do operatorów przyrównania odnoszą się te same reguły, co do operatorów relacji, a ponadto wskaźnik można przyrównać do stałej całkowitej o wartości 0 albo do wskaźnika do typu void. Patrz p. A6.6.

A7.11 Bitowy operator koniunkcji (AND)

wyraienie-AND:

wyraienie-przyrównania wyraienie-AND & wyraienie-przyrównania

Wynikiem tej operacji jest bitowa koniunkcja argumentów; argumenty podlegają zwykłym przekształceniom arytmetycznym. Operator odnosi się tylko do argumentów całkowitych.

A7.12 Bitowy operator różnicy symetrycznej (XOR)

wyraienie-XOR:

wyraienie-AND

wyraienie-XOR wyraienie-AND

•8 — język ANSI C 273


Wyszukiwarka

Podobne podstrony:
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C_________A2.1 Jednostki leksykalne Istnieje sześć klas jedno
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C Struktury i tablice są obiektami złożonymi. Jeśli obiekt zł
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C____A12.9 Pusta instrukcja preprocesora Wiersz zawierający j
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C______ Etykiety przypadków (case) i domyślne (default) są uż
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 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 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 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

więcej podobnych podstron