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.