Zmienne i typy


Przy zmiennych pamiętać należy o przysłanianiu nazw oraz zasięgu lokalnym i globalnym, jaki posiadają. Oprócz tego dochodzi jeszcze możliwość różnego umieszczania ich w pamięci.
Uzyskujemy to przez poniższe modyfikatory:
register - zmienna ma być trzymana w rejestrze procesora, a nie w pamięci, co znacznie przyspiesza działanie programu. Ma to sens, gdy zmienna jest za chwilę wielokrotnie wykorzystywana. register int i;

const - obiekt jest stały, zainicjalizowany i nie wolno później zmieniać jego wartości, const pi=3.1415;

volatile - zmienna jest ulotna i może niepostrzeżenie ulęgać zmianie jej wartość (np. odczytywana temperatura) wiec za każdym razem, gdy odwołuje sie do niej następuje ponowny fizyczny odczyt, volatile pomiar;

static - obiekt taki istnieje przez cały czas, niezależnie od zasięgu, który go używa. Przynależy tylko do danego pliku i poza nim nic nie może z niego korzystać,

extern oznacza, że następująca deklaracja nie jest fizyczną deklaracją, lecz zaimportowaniem z innego pliku.

liczby całkowite

nazwa
typu
rezerwowana
pamięci
zakres
wartości
short
int(16 bitów)
int (32 bity)
long
2 bajty
2 bajty
4 bajty
4 bajty
–32 768 do 32 767
–32 768 do 32 767
–2 147 483 648 do 2 147 483 647
–2 147 483 648 do 2 147 483 647
      

liczby rzeczywiste

nazwa
typu
rezerwowana
pamięci
zakres
wartości
float
double
long double
4 bajty
8 bajtów
10 bajtów
1.2e-38 do 3.4e38
2.2e-308 do 1.8e308


Przykład:
    int x,wynik;
    float pi=3.141592;

Typy całkowite występują w dwóch odmianach: signed (ze znakiem) oraz unsigned (bez znaku). Czasem potrzebna jest liczba ujemna, a czasem dodatnia. Liczby całkowite bez słowa kluczowego unsigned są traktowane jako liczby ze znakiem. Liczby całkowite signed są albo dodatnie albo ujemne, zaś liczby całkowite unsigned są zawsze dodatnie.
unsigned short int		zakres - od 0 do 65 535
unsigned long int		zakres - od 0 do 4 294 967 295
unsigned int (16 bitów)		zakres - od 0 do 65 535
unsigned int (32 bity)		zakres - od 0 do 4 294 967 295

char pozwala na wczytanie dowolnego znaku
Przykład:
    ..
    char koniec;
    cout<<"KONIEC?\n\tT/N";
    cin>>koniec;
..

string zapamietuje ciąg znaków
Przykład:
    ..
    string imie;
    cout<<"podaj swoje imie\n";
    cin>>imie;
    system ("cls"); //czyszczenie ekranu
    cout<<"czesc "<<imie;
    ..

typedef - pozwala nadać dodatkową nazwę już istniejącemu typowi.
Przykład:
    typedef int cena;
daje to możliwoś takiej deklaracji:
    cena a,b,c;// odpowiada to: int a,b,c;

enum - osobny typ stały wyliczeniowy dla liczb całkowitych przechowujący pewien rodzaj informacji.
Przykład:
    ..
    enum tydzien {PONIEDZIALEK, WTOREK, SRODA, CZWARTEK, PIATEK, SOBOTA, NIEDZIELA};
    /*definiowana jest stała wyliczeniowa tydzien, posiadająca siedem,
    odpowiadających dniom tygodnia, wartość całkowitą, numerowaną od 0 w górę.
    Tak więc poniedziałek ma numer 0, wtorek 1 itd.
    Można również przypisać określone wartości:
    enum
tydzien {PONIEDZIALEK=100, WTOREK, SRODA=200, CZWARTEK, PIATEK=300,
                             SOBOTA, NIEDZIELA=400};
    wtedy:
        PONIEDZIALEK będzie mieć wartość 100,
        WTOREK będzie mieć wartość 101,
        SRODA będzie mieć wartość 200,
        CZWARTEK będzie mieć wartość 201,
        PIATEK będzie mieć wartość 300,
        SOBOTA będzie mieć wartość 301,
        NIEDZIELA będzie mieć wartość 400*/

    tydzien dzis;
    dzis = PONIEDZIALEK;
    ..

Ten sam program ze stałymi całkowitymi:
    ..
    const int PONIEDZIALEK = 0;
    const int WTOREK = 1;
    const int SRODA = 2;
    const int CZWARTEK = 3;
    const int PIATEK = 4;
    const int SOBOTA = 5;
    const int NIEDZIELA = 6;
    int dzis;
    dzis = PONIEDZIALEK;
    ..