Czy rozmiar typu jest niezalezny od platformy, na ktorej pracujemy?
Czy ktoś zna odpowiedź na to pytanie i potrafi podać uzasadnienie ?
Z góry dzięki :)

- Rejestracja:prawie 12 lat
- Ostatnio:3 dni
- Lokalizacja:Szczecin
Przed odpowiedzią na to pytanie trzeba uściślić co rozumiemy przez rozmiar.
- wynik wyrażenia
sizeof(T)
Wszystkie typy poza char
, signed char
i unsigned char
(które mają rozmiar 1
) mają implementation-defined rozmiar. Dlaczego? Bo tak zostało to zdefiniowane przez komisję standaryzacyjną. Dlaczego? Aby umożliwić tworzenie wydajnej implementacji języka na jak największej liczbie platform.
- liczbę bitów zajmowaną przez zmienną danego typu.
Wtedy char
i spółka są zależne od implementacji (konkretnie mają CHAR_BIT
bitów, gdzie CHAR_BIT
≥ 8), natomiast typy o stałej wielkości, takie jak uint8_t
, uint16_t
, uint32_t
, uint64_t
, int8_t
, int16_t
, int32_t
, int64_t
mają ściśle określony rozmiar. Ponadto tablice tych typów również będą miały ściśle określony rozmiar.

- Rejestracja:ponad 12 lat
- Ostatnio:około 2 miesiące
- Lokalizacja:Kraków
- Postów:1055
Co więcej, również implementation-defined jest ilość bitów w bajcie (zobacz CHAR_BIT
). Standard C wymaga tylko żeby CHAR_BIT
>= 8. Standard POSIX wymaga natomiast CHAR_BIT == 8
.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
uint16_t
może mieć rozmiar1
jeśli mamyCHAR_BIT
16CHAR_BIT