ANSI C 1

ANSI C 1



2 TYPY, OPERATORY I WYRAŻENIA

Stała znakowa ’\0’ reprezentuje znak o wartości zero, tzw. znak pusty. Często stosuje się ją zamiast liczby 0 dla podkreślenia znakowej natury pewnych wyrażeń, zawsze jednak jej numeryczną wartością jest po prostu 0.

Wyrażenie stałe jest wyrażeniem, w którym występują wyłącznie stałe. Takie wyrażenia mogą być obliczane na etapie kompilacji programu, a nie podczas jego wykonania. W programie mogą występować wszędzie tam, gdzie używa się stałych. Przykładami wyrażeń stałych są

#define MAXLINE 1000 char line[MAXLINE+1];

oraz

#define LEAP 1    /* w roku przestępnym */

int days[31+28+LEAP+31 +30+31 +30+31 +31 +30+31+30+31 ];

Stała napisowa lub napis jest ciągiem złożonym z zera lub więcej znaków, zawartym między znakami cudzysłowu, np.

"Jestem napisem”

lub

,,n I* napis pusty */

Znaki cudzysłowu nie są częścią napisu, służą jedynie do określenia jego granic. W stałych napisowych można stosować te same sekwencje specjalne, co w stałych znakowych; zapis \” reprezentuje tu jeden znak cudzysłowu. Napisy mogą być sklejane podczas kompilacji    programu:    9

"ahoj,” ” przygodo”    \

jest równoznaczne z

"ahoj, przygodo”    ?

Ta możliwość jest bardzo użyteczna przy dzieleniu długich napisów na wiers# w programie źródłowym.

Technicznie stała napisowa jest tablicą, której elementami są znaki. Wewnętrzna reprezentacja napisu zawiera na końcu znak ’\0’, toteż rozmiar fizycznej pamięci przeznaczonej na napis jest o jeden większy niż liczba znaków zawartych między znakad# cudzysłowu. Taka reprezentacja oznacza, że praktycznie nie ma żadnego ograniczeni* dotyczącego długości tekstów. Programy muszą jednak badać cały tekst, aby określi jego długość. Funkcja strlen(s) ze standardowej biblioteki zwraca długość teks^ w argumencie s, nie licząc końcowego znaku \0. Oto nasza wersja tej funkcji:

/* strlen: podaj długość tekstu w s */ int strlen (char sf ])

{

int i;

1=0;

while (s[ i J != *\0’)

++i;

return i;

}

Funkcja strlen i inne funkcje manipulujące tekstami są zadeklarowane w standardowym pliku nagłówkowym <string.h>.

Zwróć uwagę na różnicę między stałymi znakowymi a napisami zawierającymi jeden znak: stała ’x5 nie oznacza tego samego co ”x”. Pierwsza jest znakiem o wartości numerycznej kodu litery x w maszynowym zbiorze znaków. Druga zaś jest tablicą znaków, która zawiera jeden znak (literę x) i dodatkowo znak \0.

W języku C zdefiniowano jeszcze jeden rodzaj stałej - stałą wyliczenia (ang. enume-ration constant). Wyliczenie jest listą wartości stałych całkowitych, np.

enum boolean { NO, YES }

Pierwsza nazwa na liście wyliczenia (między nawiasami klamrowymi) ma wartość 0, następna - wartość 1 i tak dalej, chyba że wystąpi jawnie podana wartość. Jeśli nie podano jawnie wszystkich wartości dla nazw, to kolejne nie sprecyzowane wartości stanowią postęp arytmetyczny, który rozpoczyna się od ostatnio określonej wartości. Tak właśnie jest w drugim z niżej podanych przykładów.

enum escapes { BELL = ’\a\ BACKSPACE = Ab’, TAB = ’\t’,

NEWLINE = ’\n\ VTAB = *\v\ RETURN = V };

enum months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL,

AUG, SEP, OCT, NOV, DEC };

I* miesiące: luty jest drugi, marzec - trzeci itd. */

Nazwy występujące w różnych wyliczeniach muszą być różne. W tym samym wyliczeniu wartości mogą się powtarzać.

Wyliczenia są wygodnym sposobem kojarzenia stałych wartości z nazwami, przy czym przewagą wyliczeń w stosunku do alternatywnego sposobu #define jest to, że wartości mogą być dla Ciebie generowane. Choć istnieje możliwość deklarowania zmiennych typu enum, to kompilator nie musi sprawdzać, czy to, co przypisujesz ta-

5 - Język ANSI C 65


Wyszukiwarka

Podobne podstrony:
ANSI C 4 2 TYPY, OPERATORY I WYRAŻENIA__.______ n = 0; for (i = 0; s[i] >= ’0’ && s[i]
ANSI C 9 TYPY, OPERATORY I WYRAŻENIA Zmienne i stałe są podstawowymi obiektami danych, jakimi posł
ANSI C 2 2 TYPY, OPERATORY I WYRAŻENIA_____— kiej zmiennej, jest poprawną wartością wyliczenia. Zm
ANSI C 3 2 TYPY, OPERATORY I WYRAŻENIA_______ W tablicy 2.1 na końcu tego rozdziału podano prioryt
ANSI C 5 2 TYPY. OPERATORY I WYRAŻENIA • Następnie, jeśli którykolwiek z argumentów ma kwalifikato
ANSI C 6 2 TYPY, OPERATORY I WYRAŻENIA unsigned long int next = 1; I* rand: daj pseudo-losowo licz
ANSI C 7 2 TYPY, OPERATORY I WYRAŻENIA możemy zapisać w bardziej zwartej postaci if (c != ’

ANSI C 8 2 TYPY, OPERATORY I WYRAŻENIA________ -077 jest wyrażeniem stałym, które może być obliczo
ANSI C 9 2 TYPY, OPERATORY I WYRAŻENIA______________ „weź i, dodaj 2, a następnie umieść wynik z p
ANSI C 0 2 TYPY, OPERATORY I WYRAŻENIA Kwalifikatory signed (ze znakiem liczby) i unsigned (bez zn
ANSI C 0 2 TYPY, OPERATORY I WYRAŻENIA struktury; będą szczegółowo opisane w rozdz. 6 razem z oper
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____.____A2.5.2 Stałe znakowe Stała znakowa jest ciągiem zł
Reguła? L Hospitala (3) 3 4.4. Wyrażenia nieoznaczone typu 0° , l00, oo° Aby obliczyć granicę wyraże
Przykłady - polecenia SQLTypy danych Typy danych Opis CHAR
TYPY KWIATOSTANÓW bmp bałdachogrono główka O o ^0° wiecha grono kłos
Operatory i wyrażenia• Wyrażenie jest kombinacją stałych, zmiennych i operatorów, stosowaną do zapis

więcej podobnych podstron