W C++ obowiązuje ścisła kontrola typu danych. Wszystkie zmienne występujące w programie muszą być najpierw zdefiniowane. Każdy typ danych ma określony rozmiar w bajtach (nie ma to "nic" wspólnego z maksymalnym rozmiarem np. łańcucha). By sprawdzić jaką długość mają różne typy danych skompiluj i wykonaj:
#include<iostream>
#include<string>
using namespace std;
int main()
{
long double ld = 0;
string st = "Ba bla bla bbbb";
short sh = 0;
long *lo = 0;
cout << "Long Double: " << sizeof(ld) << endl
<< "Double: " << sizeof(double) << endl
<< "Float: " << sizeof(float) << endl
<< "Long Long: " << sizeof(long long) << endl
<< "Long: " << sizeof(long) << endl
<< "Int: " << sizeof(int) << endl
<< "Short: " << sizeof(short) << endl
<< "Char: " << sizeof(char) << endl
<< "Bool: " << sizeof(bool) << endl
<< "String: " << sizeof(string) << endl
<< "long*: " << sizeof(lo) << endl;
return 0;
}
Funkcja
sizeof zwraca ilość bitów zajmowaną przez obiekt (w tym przypadku typ zmiennej). Dla GCC otrzymamy zapewne tego typu wynik:
Long Double: 12
Double: 8
Float: 4
Long Long: 8
Long: 4
Int: 4
Short: 2
Char: 1
Bool: 1
String: 4
long*: 4
Typy całkowite: to char, short, int i long. Char to zmienne zawierające jeden znak, pozostałe to zmienne liczbowe, całkowite. Wszystkie te zmienne moga występować jako
unsigned i
signed. Zakres wartości dla unsigned to
[0, 2n - 1] gdzie n to ilość bitów zajmowanych przez typ, a dla signed
[-2n-1, 2n-1 - 1] . Przykladowo 2 bitowa zmienna typu short może przyjmować wartości od -32768 do 32767 dla signed i od 0 do 65535 dla unsigned.
Typy zmiennoprzecinkowe: to float, double i long double. Zmienne typu float są rzadko a przy operacjach arytmetycznych i tak przekształcane są na zmienne typu double.
Typ logiczny: jest to typ bool mogący przechowywać wartości prawda/fałsz. Wartość 0 to fałsz a dowolna inna to prawda.
Wyliczenia, enumeracje: Zmienne przypisane do typu wyliczeniowego będą mogły przyjmować jedynie wartości przewidziane przez wyliczenie. Wyliczenie to zbiór stałych, które mogą być parametrem zmiennej skojarzonej z wyliczeniem.:
#include<iostream>
#include<string>
using namespace std;
enum dni { pon, wto, sro };
void info(dni wpisany_dzien)
{
cout << wpisany_dzien << endl;
}
int main()
{
info(wto);
}
Wyliczenie definiujemy słowem
enum potem podajemy nazwę wyliczenia i jego zbiór. C++ przypisuje elementom wyliczenia liczby całkowite zaczynając od zerach, chyba że jawnie przypiszemy inną wartość (np.:
enum dni { pon, wto=5, sro };). Powyższy przykład właśnie zwraca liczbę przypisaną wartości z wyliczenia. Parametr funkcji
info jest "skojarzony" z wyliczeniem (zwróć uwagę na brak przecinka między dni a wpisany_dzien). W funkcji main możemy wywołać funkcję info podając jako parametr jedną z trzech wartości przewidzianych w wyliczeniu. Program nie skompiluje się jeżeli podamy inną wartość. Wyliczenia najczęściej stosuje się by sprawdzić poprawność wprowadzonych parametrów.
Wskaźniki: wskaźnik danego typu, np. double może wskazywać adresy istniejących zmiennych tego samego typu:
#include<iostream>
#include<string>
using namespace std;
int main()
{
double x = 2;
double *y;
y = &x
cout << y << endl;
cout << *y << endl;
}
Zapis
typ * nazwa zmienne tworzy zmienną - wskaźnik dla zmiennych typu podany_typ. Zapis
&zmienna zwraca jej adres. Program ten w pierwszej linii wypisze adres zmiennej x a w drugiej jej wartość.
*wskaźnik jest nazwą zmiennej wskazywanej przez
wskaźnik.
Referencje, odnośniki: są to "zmienne" będące aliasami istniejących zmiennych o określonym typie.
int k = 5;
int &referer = k;
Zmienna
referer jest aliasem zmiennej
k (znak & przy nazwie) i jeżeli zmienna
k zmieni wartość i to zmienna
referer także.
- Dodane: 14.07.2008 przez riklaunim