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 :)
Rozmiar typu
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: 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: dni
- Ostatnio: dni
- 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.
- Rejestracja: dni
- Ostatnio: dni
Czy rozmiar typu jest niezalezny
Zależy którego.
char ma 1 bajt niezależnie od platformy.
rozmiar int czy long jest zależny od platformy.
typy takie jak int32_t mają określony rozmiar niezależny od platformy.