ANSI C 7

ANSI C 7



DODATEK A PRZEWODNIK JĘZYKA C______

Etykiety przypadków (case) i domyślne (default) są używane w instrukcji switch (p. A9.4). Wyrażenie stałe występujące w etykiecie case musi mieć typ całkowity.

Etykiety jako takie nie wpływają na sterowanie programem.

A9.2 Instrukcja wyrażeniowa

Większość instrukcji to instrukcje wyrażeniowe o postaci

instrukcja-wyrateniowa: wyraienieopc ;

Większość instrukcji wyrażeniowych to przypisania i wywołania funkcji. Wszystkie efekty uboczne spowodowane przez wyrażenie są zakończone przed rozpoczęciem wykonania następnej instrukcji. Konstrukcja, w której pominięto wyrażenie, nazywa się instrukcją pustą; jest ona często używana do oznaczenia pustej treści instrukcji powtarzania lub do wstawiania etykiet.

A9.3 Instrukcja złożona (blok)

Aby można było użyć kilku instrukcji tam, gdzie oczekuje się jednej, wprowadzono instrukcję złożoną (zwaną również blokiem). Treść definicji funkcji jest instrukcją złożoną.

instrukcja-złoiona:

{ lista-deklaracji ą)C lista-instrukcjiol,c }

lista-deklaracji: deklaracja

lista-deklaracji deklaracja

lista-instrukcji:

instrukcja

lista-instrukcji instrukcja

Jeśli dowolny identyfikator z listy deklaracji był zadeklarowany na zewnątrz bloku, to jego poprzednia deklaracja jest przesłaniana na czas wykonywania bloku (patrz p. Al 1.1); po opuszczeniu bloku jej ważność będzie przywrócona. Dany identyfikator może być tylko raz zadeklarowany w bloku. Ta zasada dotyczy identyfikatorów nale-

A9 INSTRUKCJE



żących do tej samej przestrzeni nazw (p. Ali); identyfikatory należąc przestrzeni nazw są traktowane jako różne.

Inicjowanie obiektów automatycznych wykonuje się w kolejności ich deklaracji przy każdym wejściu do bloku przez jego początek. Inicjowania nie wykonuje się przy skoku do wnętrza bloku. Inicjowanie obiektów static wykonuje się tylko raz, zanim program rozpocznie działanie.

A9.4 Instrukcje wyboru

Instrukcje wyboru służą do wybrania jednej z kilku ścieżek wykonania programu.

instrukcja- wyboru:

if ( wyrażenie ) instrukcja

if ( wyrażenie ) instrukcja else instrukcja

switch ( wyrażenie ) instrukcja

W obu postaciach instrukcji if wyrażenie musi mieć typ arytmetyczny lub wskaźnikowy. Jeśli wartość wyrażenia (po obliczeniu wszystkich efektów ubocznych) jest różna od zera, to wykonuje się pierwszą podinstrukcję. W drugiej postaci, jeżeli wartość wyrażenia jest równa zeru, to wykonuje się drugą podinstrukcję. Niejednoznaczność przyporządkowania else rozstrzyga się, wiążąc else z ostatnią instrukcją if bez else, napotkaną na tym samym poziomie struktury blokowej.

Instrukcja switch powoduje przekazanie sterowania do jednej z szeregu instrukcji, zależnie od wartości wyrażenia (które musi mieć typ całkowity). Podinstrukcja kontrolowana przez instrukcję switch jest w praktyce instrukcją złożoną. Każda instrukcja wewnątrz instrukcji złożonej może być etykietowana jedną lub kilkoma etykietami przypadków (case - p. A9.1). Wyrażenie kontrolne podlega promocji typu całkowitego (p. A6.1), a stałe przypadków są przekształcane do promowanego typu. W jednej instrukcji switch wszystkie stałe przypadków muszą mieć po przekształceniu różne wartości. Z instrukcją switch może być związana co najwyżej jedna etykieta domyślna default. Instrukcje switch mogą być w sobie zagnieżdżone; etykiety case i default są związane z najciaśniej otaczającą je instrukcją switch.

Wykonanie instrukcji switch polega na obliczeniu jej wyrażenia (wraz z efektami ubocznymi) i porównaniu jego wartości z wartościami stałych przypadków. Jeśli wartość jednej ze stałych jest równa wartości wyrażenia, to sterowanie jest przekazywane do instrukcji opatrzonej tą etykietą przypadku. Jeśli żadna ze stałych przypadków nie jest równa wartości wyrażenia i występuje etykieta domyślna default, to sterowanie jest przekazywane do instrukcji opatrzonej tą etykietą. Gdy wszystkie

297


Wyszukiwarka

Podobne podstrony:
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 stałe przypadków są różne od wartości wyrażenia i nie wystę
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___ nazwa-typu: lista-spec-kwal
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA CA7.8 Operatory przesunięcia Operatory przesunięcia « i » są
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 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

więcej podobnych podstron