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ść bajtó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ść bajtó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.
blog comments powered by Disqus

Kategorie

Serwisy