JĘZYK C – TYPY DANYCH, ZMIENNE, FUNKCJE 11
Celem ćwiczenia jest zapoznanie się z prostymi i złożonymi typami danych oraz własnościami zmiennych statycznych, automatycznych i rejestrowych. Omówione są także podstawowe własności funkcji oraz możliwości strukturalnego tworzenia programów z wykorzystaniem funkcji w języku C.
W języku C typy danych możemy podzielić na proste i złożone.
W języku C i C++ są dostępne następujące proste typy danych:
Typ void jest najczęściej używany do deklaracji funkcji nie zwracającej żadnej wartości, do deklaracji pustej listy argumentów funkcji i do deklaracji wskaźników beztypowych.
Typ char jest typem znakowym służącym do przechowywania dowolnego znaku ze zbioru znaków dostępnego w danym systemie komputerowym. Każdy znak jest przechowywany jako liczba całkowita (przeważnie bez znaku – zależy to implementacji). W większości implementacji języka C/C++ zmienne typu char mają rozmiar 1 bajtu, co powoduje, że mogą przechowywać liczby całkowite z zakresu 0 ÷ 255 lub –128 ÷ +127, jeśli są interpretowane ze znakiem. Na obiektach typu char można wykonywać operacje arytmetyczne. Najczęściej stosuje się kodowanie znaków w standardzie ASCII.
Typ int jest typem całkowitym pozwalającym przechowywać liczby całkowite ze znakiem. Rozmiar obiektu typu int odpowiada najczęściej długości słowa danego komputera (lecz nie mniej niż 16 bitów): w systemach 16-bitowych obiekty typu int mają rozmiar 2 bajtów, w systemach 32-bitowych – 4 bajtów.
Przy deklaracji obiektów typu char lub int można stosować następujące modyfikatory typu:
· unsigned w celu jawnego wyspecyfikowania, że wartości mają być traktowane bez znaku (nieujemne).
· signed w celu jawnego wyspecyfikowania, że wartości mają być traktowane ze znakiem.
Przy deklaracji obiektów typu int można stosować następujące modyfikatory (oprócz wymienionych powyżej):
· long – implementacje języka C/C++ gwarantują, że rozmiar obiektów typu long int jest nie mniejszy niż obiektów typu int (mogą być równe) oraz nie mniej niż 32 bity.
· short – implementacje języka C/C++ gwarantują, że rozmiar obiektów typu short int jest nie większy niż obiektów typu int (mogą być równe).
W tabeli 1 zestawiono rozmiary obiektów typu int i pochodnych, otrzymanych przez dodanie modyfikatorów typu oraz zakresy liczb, które te obiekty mogą przechowywać.
Tabela 1
Typ
Systemy 16-bitowe
Systemy 32-bitowe
Rozmiar
(bajty)
Zakres
short int
2
–215 ¸ (215-1)
unsigned short int
0 ¸ (216–1)
int
4
–231 ¸ (231–1)
unsigned int
0 ¸ (232–1)
long int
unsigned long int
Przykłady deklaracji zmiennych całkowitych:
char c;
signed char sc, sc1;
int x1, x2;
long int l1;
unsigned int uu, ww;
unsigned long int ul1, uL1;
Obiekty zmiennoprzecinkowe służą do przechowywania i wykonywania obliczeń na liczbach rzeczywistych. W implementacjach języka C/C++ można wyróżnić następujące typy zmiennoprzecinkowe:
· float – typ pojedynczej precyzji,
· double – typ podwójnej precyzji,
· long double – typ rozszerzonej precyzji (w wielu implementacjach utożsamiany z typem double).
W tabeli 2 zestawiono dokładność obliczeń, rozdzielczość i dopuszczalny zakres wartości obiektów typu float i double.
Tabela 2
Dokładność
(cyfr dziesiętnych)
Rozdzielczość
Najmniejsza liczba
(moduł)
Największa liczba
float
ok. 6
10–5
10–38
1037
double
ok. 15
2∙10–16
sliwak