W języku C, jeśli oczekujesz, że iloraz dwóch liczb całkowitych będzie miał część ułamkową (np. 5/2 ma dać 2,5), to wynik trzeba przechowywać w typie zmiennoprzecinkowym. Z podanych odpowiedzi takim typem jest float.
Warto pamiętać o bardzo częstym "haczyku": samo zadeklarowanie zmiennej jako float nie zmienia sposobu wykonania dzielenia, jeśli oba operandy są typu całkowitego. Wyrażenie zbudowane z int/int jest obliczane jako dzielenie całkowite (z obcięciem części ułamkowej), a dopiero potem wynik może zostać przekonwertowany do float.
Dlatego, aby faktycznie zachować ułamek, zwykle wykonuje się rzutowanie co najmniej jednego operandu lub używa literału zmiennoprzecinkowego, np.:
float wynik = (float)a / b;
float wynik = a / 2.0;
Dlaczego pozostałe odpowiedzi są błędne?
- int przechowuje wyłącznie liczby całkowite, więc nie jest właściwy do wyniku, w którym ma pozostać część ułamkowa.
- char jest przeznaczony głównie do znaków (i ma mały zakres liczbowy), więc nie nadaje się do ogólnego przechowywania ilorazów z ułamkami.
- bool przechowuje tylko wartości logiczne (prawda/fałsz), więc nie opisuje wartości liczbowych ilorazu.
Na egzaminie zwracaj uwagę na sformułowanie "z zachowaniem części ułamkowej" – ono jednoznacznie wskazuje na potrzebę typu zmiennoprzecinkowego.