Rozmiar typu

FA
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 3 lata
0

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 :)

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
  • Lokalizacja:Szczecin
7

Przed odpowiedzią na to pytanie trzeba uściślić co rozumiemy przez rozmiar.

  1. 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.

  1. 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.


edytowany 1x, ostatnio: kq
FA
Czyli poprawna odpowiedź to TAK ?
kq
Raczej tak, chyba ​że pytasz o jeden z trzech wymienionych ;)
kaczus
hmm chyba zniknąłeś uint16_t, uint_8_t itp???
kq
to są typedefy + uint16_t może mieć rozmiar 1 jeśli mamy CHAR_BIT 16
kq
Chyba, że przez rozmiar rozumiemy liczbę bitów, wtedy masz rację a ja nie
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Kraków
  • Postów:1055
2

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.


do not code, write prose
edytowany 2x, ostatnio: pingwindyktator
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
4

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.

edytowany 1x, ostatnio: Azarien

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.