Wyklad2a PPK sem2 PKos ProgramowanieZaawansowane cd, Programowanie i komputery
[ Pobierz całość w formacie PDF ]
operator sizeof (‘rozmiar czego’)
Który pozwala na uzyskanie wielkoci zmiennej (lub jej typu)
w trakcie działania programu.
Spojrzenie na poniższy przykład powinno nam przybliży funkcjonowanie tego operatora:
// Sizeof - pobranie rozmiaru zmiennej lub typu
#include <iostream>
#include <conio.h>
void main()
{
std::cout << "Typy liczb calkowitych:" << std::endl;
std::cout << "- int: " << sizeof(int) << std::endl;
std::cout << "- short int: " << sizeof(short int) << std::endl;
std::cout << "- long int: " << sizeof(long int) << std::endl;
std::cout << "- char: " << sizeof(char) << std::endl;
std::cout << std::endl;
std::cout << "Typy liczb zmiennoprzecinkowych:" << std::endl;
std::cout << "- float: " << sizeof(float) << std::endl;
std::cout << "- double: " << sizeof(double) << std::endl;
getch();
}
EKRAN WYJCIOWY POWYŻSZEGO PROGRAMU:
RZUTOWANIE TYPÓW W C++:
„wymuszenie” na kompilatorze zaakceptowania ZMIANY TYPU ZMIENNEJ wg naszego
życzenia (czyli kompilator na chwil zapomina o sprawdzaniu typów).
Rzutowa (ang.
cast) przypisywaną warto na docelowy typ –
na przykład ze zmiennoprzecinkowego:
float
na całkowity
: int
.
Rzutowanie działa troch na zasadzie umowy z kompilatorem, która w
naszym przypadku mogłaby brzmie tak: „Wiem, że naprawd jest to liczba
zmiennoprzecinkowa, ale włanie
tutaj chc, aby stała si liczbą całkowitą typu int, bo
musz ją przypisa do zmiennej tego typu”. Takie porozumienie wymaga ustpstw od
obu stron – kompilator musi „pogodzi si” z chwilowym zaprzestaniem kontroli typów,
a programista powinien liczy si z ewentualną utratą czci danych (w naszym
przykładzie powicimy cyfry po przecinku).
int nX, nY; //deklaracja zmiennych
nX = 14;
(int)
nY = 0.333 * nX; //rzutowanie na typ int
RZUTOWANIE TYPÓW W C++ (c.d):
Inny przykład: rzutowanie z typu liczbowego
int
na typ znakowy
char
– generowanie tablicy kodów ASCII
// SimpleCast - proste rzutowanie typów
void main()
{
for (int i = 32; i < 256; i += 4)
{
std::cout << "| " << (char) (i) << " == " << i << " | ";
std::cout << (char) (i + 1) << " == " << i + 1 << " | ";
std::cout << (char) (i + 2) << " == " << i + 2 << " | ";
std::cout << (char) (i + 3) << " == " << i + 3 << " |";
std::cout << std::endl;
}
getch();
}
Aplikacja ta pokazuje nam tablic kolejnych znaków wraz z
odpowiadającymi im kodami ANSI.
[ Pobierz całość w formacie PDF ]