int
to zazwyczaj 32 bity, ale w standardzie int
nie ma gwarantowanej stałej szerokości. Jeśli więc chcemy 32-bitowego int
, dołączamy stdint.h
i używamy int32_t
.Liczby zmiennoprzecinkowe o stałej szerokości w C/C++
Czy istnieje odpowiednik dla elementów pływających? Zdaję sobie sprawę, że jest to nieco bardziej skomplikowane w przypadku pływaków, ponieważ nie są one przechowywane w jednorodny sposób, tj. Znak, wykładnik, znaczenie. Chcę tylko double
, który jest gwarantowany do przechowywania w 64 bitach z 1 bitem znakowym, 10-bitowym wykładnikiem i 52/53 bit significand (w zależności od tego, czy policzysz ukryty bit).
Zazwyczaj liczba bitów dla int jest potrzebna, ponieważ koduje jakieś flagi obiektów. Dlaczego potrzebujesz gwarancji precyzji swoich pływaków? W większości przypadków widziałem, że ludzie mają tendencję do zawyżania znaczenia wielkości zmiennych losowych. Często lepiej jest używać domyślnego rozmiaru słowa komputera niż próbować wycisnąć 3 bajty pamięci lub dowolnie używać wartości 32-bitowych. –
@ Andrew-Khosravian Piszę język skryptowy i chciałbym móc zapewnić moim użytkownikom dostęp do gwarancji rozmiaru. Dzięki temu kod napisany w moim języku skryptowym jest bardziej przenośny. – Imagist
Przenośność jest w porządku, ale musisz narysować gdzieś linię - w końcu prawdopodobnie nie spodziewasz się, że twój język skryptowy będzie działał na PDP-11. Bardzo niewiele platform nie obsługuje IEEE 754, a jeśli jest to obsługiwane, to jest rozsądnym założeniem, że double jest w rzeczywistości 64 bitami (ponieważ jest to wartość zmiennoprzecinkowa * podwójna *) - i poza szansą, że nie jest , zbuduj kontrolę poprawności, aby użytkownicy mogli ją zgłosić i możesz obsługiwać tę platformę osobno. Jeśli platforma nie obsługuje IEEE 754, i tak nie otrzymasz tej reprezentacji, chyba że sam ją wdrożysz. –