W zadaniu trzeba przechować numer dnia miesiąca, czyli wartość całkowitą z niewielkiego zakresu (w praktyce 1–31). Aby kompilator zarezerwował jak najmniej pamięci, należy dobrać typ o możliwie małym rozmiarze, ale nadal mieszczący wymagany zakres.
Odpowiedź "Byte" jest poprawna, ponieważ jest to mały typ całkowity przeznaczony do przechowywania niewielkich wartości nieujemnych (typowo do 255). Zakres ten zdecydowanie wystarcza na liczby 1–31, więc nie ma potrzeby używania większych typów.
Dlaczego pozostałe propozycje są niepoprawne:
- "Integer" – również przechowuje liczby całkowite, ale zwykle zajmuje więcej pamięci niż Byte. Wybór "na zapas" zwiększa zużycie pamięci bez korzyści, bo zakres 1–31 jest bardzo mały.
- "Real" – to typ zmiennoprzecinkowy do liczb z częścią ułamkową. Numer dnia nie wymaga ułamków, a typy zmiennoprzecinkowe są większe i mogą wprowadzać problemy z dokładnością (reprezentacja przybliżona).
- "Char" – służy do przechowywania pojedynczego znaku (np. 'A' albo '7'), a nie wartości liczbowej w sensie arytmetycznym. Da się kodować cyfry jako znaki, ale to zmienia znaczenie danych i utrudnia obliczenia.
W praktyce zasada jest prosta: dobieraj typ danych do rzeczywistego zakresu. Jeśli wartości są małe (jak dni miesiąca), wybór najmniejszego sensownego typu całkowitego pomaga oszczędzać pamięć, zwłaszcza gdy takich pól jest dużo (np. w tablicach lub rekordach).