KWALIFIKACJA INF3 - CZERWIEC 2023 (test 2)

PYTANIE NR 6.
Które typy danych w języku C++ reprezentują liczby rzeczywiste?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Typy float i double są w C++ typami zmiennoprzecinkowymi, czyli służą do zapisu liczb z częścią ułamkową (liczb rzeczywistych). Natomiast bool przechowuje wartości logiczne, a long i short należą do typów całkowitych, więc nie reprezentują ułamków.

Pełne wyjaśnienie:

W C++ liczby rzeczywiste (wartości z częścią ułamkową) reprezentuje się przede wszystkim za pomocą typów zmiennoprzecinkowych. Do tej grupy należą m.in. float i double (oraz także long double, którego nie ma w odpowiedziach jako kompletnej pary).

Odpowiedź "float i double" jest poprawna, ponieważ oba elementy pary są typami zmiennoprzecinkowymi: pozwalają zapisać ułamki i mają określoną precyzję oraz zakres wartości. W praktyce float często wybiera się, gdy liczy się pamięć i szybkość (np. grafika), a double, gdy ważniejsza jest precyzja obliczeń.

Pozostałe pary są błędne, bo zawierają typ, który nie jest rzeczywisty:

  • "double i bool"bool to typ logiczny przechowujący tylko true/false, nie jest typem liczbowym do ułamków.
  • "float i long"long (w kontekście typów całkowitych) przechowuje liczby całkowite; nazwa sugeruje "większy rozmiar", ale nie oznacza zmiennoprzecinkowości.
  • "double i short"short również jest typem całkowitym, więc nie przechowuje części ułamkowej.

Wskazówka egzaminacyjna: jeśli pytanie dotyczy liczb rzeczywistych, szukaj słów/typów związanych ze zmiennoprzecinkowością (float, double, long double). Typy całkowite (short, int, long) i logiczne (bool) to inne kategorie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Do liczb rzeczywistych (z częścią ułamkową) w C++ używa się typów zmiennoprzecinkowych: float, double oraz long double. W zadaniach testowych najczęściej porównia się je z typami całkowitymi (np. short, long) i logicznym bool.
To znaczy, że liczba jest zapisywana w formie zbliżonej do notacji naukowej (mantysa i wykładnik), co pozwala przechowywać ułamki oraz bardzo małe i bardzo duże wartości. Kosztem jest to, że nie wszystkie wartości dziesiętne da się zapisać dokładnie.
long (np. long int) należy do typów całkowitych, czyli przechowuje tylko liczby bez części ułamkowej. Słowo "long" informuje głównie o rozmiarze/zakresie w rodzinie typów całkowitych, a nie o tym, że to typ zmiennoprzecinkowy.
bool służy do logiki (prawda/fałsz). W niektórych sytuacjach może być niejawnie konwertowany na 0 lub 1, ale to nie czyni go typem do reprezentacji liczb rzeczywistych. W zadaniach egzaminacyjnych traktuj go jako typ logiczny, nie liczbowy.
float bywa używany tam, gdzie liczy się mniejsze zużycie pamięci i szybkość, np. w grafice komputerowej, grach i przetwarzaniu dużych tablic danych. Ma jednak mniejszą precyzję niż double, więc nie zawsze nadaje się do dokładnych obliczeń.
double wybiera się, gdy potrzebna jest większa precyzja obliczeń (np. obliczenia naukowe, statystyka, finansowe przeliczenia pomocnicze). Zwykle jest bezpieczniejszym domyślnym wyborem dla ułamków, bo redukuje ryzyko błędów zaokrągleń.
long double to typ zmiennoprzecinkowy o rozszerzonej precyzji względem double, ale jego parametry zależą od kompilatora i platformy. Na egzaminie ważne jest głównie to, że należy do tej samej rodziny typów rzeczywistych co float i double.
Typy całkowite w C++ to m.in. short, int, long (oraz odmiany ze znakiem i bez znaku). Jeśli w odpowiedzi pojawia się jeden typ zmiennoprzecinkowy i jeden całkowity, para nie opisuje wyłącznie liczb rzeczywistych.
Wynika to z reprezentacji binarnej: wiele liczb dziesiętnych (np. 0,1) nie ma skończonego zapisu w systemie dwójkowym, więc są przybliżane. To powoduje błędy zaokrągleń, które mogą się kumulować. Dlatego czasem preferuje się double.
Warto zrobić krótką ściągę z podziałem: zmiennoprzecinkowe (float, double, long double), całkowite (short, int, long) i logiczne (bool). Potem ćwicz na przykładach deklaracji i sprawdzaj, czy typ przechowuje ułamek.
info

To pytanie poprawnie rozwiązuje 64% zdających egzamin. średnie

W praktyce zawodowej kluczowe jest to, że typy float i double są w C++ typami zmiennoprzecinkowymi, czyli służą do zapisu liczb z częścią ułamkową (liczb rzeczywistych).

Źródła:

  • cppreference.com: Fundamental types — Floating-point types (float, double, long double): https://en.cppreference.com/w/cpp/language/types (dostęp 2026-02-28)
  • cppreference.com: Arithmetic types (podział na całkowite i zmiennoprzecinkowe): https://en.cppreference.com/w/cpp/language/types#Arithmetic_types (dostęp 2026-02-28)
  • ISO/IEC 14882:2020(E) Programming Languages — C++ (opis typów fundamentalnych i zmiennoprzecinkowych), rozdział dotyczący fundamental types

Materiały:

  • Dokumentacja cppreference: sekcja o typach fundamentalnych i zmiennoprzecinkowych
  • Rozdział o typach danych w podręczniku do C++ dla poziomu technikum
  • Ćwiczenia: deklaracje zmiennych i proste obliczenia na float/double oraz porównanie z typami całkowitymi

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego