Wbudowane typy danych I deklarowanie zmiennych w C++
1
Deklaracje zmiennych Każda nazwa w C++ zanim zostanie użyta, musi zostać zadeklarowana. Deklaracja informuje kompilator, że dana nazwa reprezentuje obiekt określonego typu, ale nie rezerwuje dla niego miejsca w pamięci. Definicja zaś - dodatkowo rezerwuje miejsce. Definicja jest miejscem, gdzie powołuje się obiekt do życia. Oczywiście, definicja jest zawsze również deklaracją. Deklarować obiekt w programie można wielokrotnie, natomiast definiować można tylko raz.
2
Przykład: int licznik = 3;
//definicja + deklaracja
extern int licznik; // deklaracja ( tylko!)
3
Systematyka typów w C++ Typy języka C++ można podzielić dwojako: Pierwszy podział:
typy fundamentalne; typy pochodne, które powstają na bazie typów fundamentalnych.
Drugi podział :
typy wbudowane, czyli takie, w które język C++ jest wyposażony; typy zdefiniowane przez użytkownika. 4
Typy fundamentalne: Typy reprezentujące liczby całkowite:
short int int long int Typ reprezentujący obiekty zadeklarowane jako znaki alfanumeryczne:
char
5
Wymienione typy mogą być w dwóch wariantach - ze znakiem i bez znaku. Do wybrania wariantu posługujemy się odpowiednio modyfikatorami:
signed unsigned Przykłady: signed int x; unsigned int x;
Przez domniemanie przyjmuje się, że zapis int a; oznacza typ signed int a, czyli typ ze znakiem. 6
Typy reprezentujące liczby zmiennoprzecinkowe:
float double long double Typy te umożliwiają pracę na liczbach rzeczywistych z różną dokładnością.
7
Typy całkowite int 32 bitowe liczby całkowite w kodzie U2. Zakres: -231...231 - 1, -2147483648...2147483647. Każda zmienna int zajmuje w pamięci komputera 4 bajty.
unsigned int 32 bitowe liczby całkowite w naturalnym kodzie binarnym. Zakres: 0...232 - 1, 0...4294967295. Każda zmienna unsigned int zajmuje w pamięci komputera 4 bajty. 8
Typy całkowite short int 16 bitowe liczby całkowite w kodzie U2. Zakres: -215...215 - 1, -32768...32767. Każda zmienna short int zajmuje w pamięci komputera 2 bajty.
unsigned short int 16 bitowe liczby całkowite w naturalnym kodzie binarnym. Zakres: 0...216 - 1, 0...65535. Każda zmienna unsigned short int zajmuje w pamięci komputera 2 bajty. 9
Typy całkowite char 8 bitowe liczby całkowite w kodzie U2. Zakres: -27...27 - 1, -128...127. Każda zmienna char zajmuje w pamięci komputera 1 bajt. Typ ten jest interpretowany przez operacje wejścia wyjścia jako typ znakowy - jedna zmienna char może przechować jeden znak ASCII. Poza tym zmienne char możemy traktować jak zwykłe zmienne całkowite.
unsigned char 8 bitowe liczby całkowite w naturalnym kodzie binarnym. Zakres: 0 do 28 - 1, 0...255. Każda zmienna unsigned char zajmuje w pamięci komputera 1 bajt. Typ ten jest interpretowany przez operacje wejścia wyjścia jako typ znakowy. 10
Typy całkowite long long int 64 bitowe liczby całkowite w kodzie U2. Zakres: -263...263 - 1, -9223372036854775808...9223372036854775807. Każda zmienna long long int zajmuje w pamięci komputera 8 bajtów.
unsigned long long int 64 bitowe liczby całkowite w naturalnym kodzie binarnym. Zakres: 0...264 - 1, 0...18446744073709551615. Każda zmienna unsigned long long int zajmuje w pamięci komputera 8 bajtów. 11
Co siÄ™ stanie gdy przekroczymy zakres?
12
Typy zmiennoprzecinkowe
float 32 bitowe liczby zmiennoprzecinkowe o pojedynczej precyzji. Precyzja 7-8 cyfr. Każda zmienna float zajmuje w pamięci komputera 4 bajty.
13
Typy zmiennoprzecinkowe double 64 bitowe liczby zmiennoprzecinkowe o podwójnej precyzji. Precyzja 15 cyfr. Każda zmienna double zajmuje w pamięci komputera 8 bajtów.
14
Co się stanie gdy przekroczymy precyzję?
15
Do przemyślenia ;) #include <iostream> #include <conio> int main() 0.1 – long double (80 bitów) { x – float (32 bity) float x; Koprocesor wykonuje obliczenia na 80 bitach x = 0; x = x + 0.1; x = x + 0.1; x = x + 0.1; x = x - 0.1; x = x - 0.1; x = x - 0.1; cout << "x = " << x << endl; getch(); return 0; } 16
Typ logiczny bool 1 bitowa dana logiczna. Każda zmienna bool zajmuje w pamięci komputera 1 bajt. Wartość zmiennej jest przechowywana w najmłodszym bicie. Pozostałe 7 bitów jest niewykorzystywane.
Przy przypisywaniu wartości zmiennej kompilator C++ dokonuje niejawnej konwersji:
zmienna = wyrażenie; Wartość wyrażenia jest obliczana, a następnie dokonana zostaje konwersja tej wartości zgodnie z typem zmiennej. Dla zmiennych bool wartość wyrażenia różna od 0 oznacza prawdę - zostanie ustawiony ostatni bit zmiennej i w efekcie otrzymamy wartość 1
17
Sprawdzamy zajętość typu
18
Wynik na ekranie:
19
Definicja, deklaracja
20
Stała w C++
21
Jeszcze o zmiennej
22
Przykład z operatorem sizeof()
Wykorzystaliśmy go już wcześniej. 23
Manipulatory
24
koniec
podrÄ&#x2122;cznik do programowania strukturalnego i obiektowego.
25