/* Program ilustrujący niektóre dostępne typy danych i ich rozmiary.

   Kompilacja

     g++ -O -Wall -o typ typ.cpp

*/
bool b = true;
char c = '1';
int a;
long long l;

int * p = &a;

// Tablica typu long long
long long lt[4];

#include <stdint.h>
// Prosta struktura
struct moja_data {
    int8_t dzien;
    int8_t miesiac;
    int rok;
} d;

moja_data * pd;

// Tablica struktur
moja_data daty[7];

// Struktura zawiejająca tablicę
struct st {
   int i;
   char ct[7];
};

// Tablica takich truktur
st stt[5];

//Skomplikowna tablica wielowymiarowa
st stt2[3][4][7];

#include <iostream>
#include <string>
using namespace std;

string ss = "ala ma kota";

int
main() {
    cout << "rozmiar b to " << sizeof(b) << endl;
    cout << "rozmiar c to " << sizeof(c) << endl;
    cout << "rozmiar a to " << sizeof(a) << endl;
    cout << "rozmiar l to " << sizeof(l) << endl;
    cout << "rozmiar d.dzien to " << sizeof(d.dzien) << endl;
    cout << "rozmiar d to " << sizeof(d) << endl;
    cout << "rozmiar daty to " << sizeof(daty) << endl;
    cout << "rozmiar daty[0] to " << sizeof(daty[0]) << endl;
    cout << "rozmiar st to " << sizeof(st) << endl;
    cout << "rozmiar stt to " << sizeof(stt) << endl;
    cout << "rozmiar stt2 to " << sizeof(stt2) << endl;
    cout << "rozmiar p to " << sizeof(p) << endl;
    cout << "rozmiar pd to " << sizeof(pd) << endl;

    cout << "sizeof(ss) to " << sizeof(ss) << endl;
    cout << "ilość znaków w ss to " << ss.size() << endl;

    cout << "pierwszy znak ss to " << ss[0] << endl;

    cout << "'2' - '0' to " << '2' - '0' << endl;
    cout << "Numeryczna wartość '2' to " << (int)'2' << endl;
}
