• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ile bajtów ma zmienna nowo utworzonego typu

Object Storage Arubacloud
+1 głos
589 wizyt
pytanie zadane 28 stycznia 2018 w C i C++ przez Nortalf Użytkownik (880 p.)

Witam.

Mam problem z zadaniem.

Czy ktoś mógłby mi wytłumaczyć jak znaleźć rozwiązanie?

komentarz 30 stycznia 2018 przez Piotr Batko Stary wyjadacz (13,190 p.)
Czy "ułożenie z dokładnością do" należy rozumieć jako "wyrównanie każdej danej składowej do adresu będącego wielokrotnością"?
komentarz 31 stycznia 2018 przez Nortalf Użytkownik (880 p.)
Trochę niefortunnie sformułowane, ale o to chodzi :)

2 odpowiedzi

0 głosów
odpowiedź 29 stycznia 2018 przez j23 Mędrzec (194,920 p.)
komentarz 30 stycznia 2018 przez Nortalf Użytkownik (880 p.)
edycja 30 stycznia 2018 przez criss

Nie do końca. Do rozwiązania potrzebne są jeszcze unie Unions, ale mimo to wynik nie wychodzi poprawnie.

int x[2] ma 8B
float y[3] ma 12B 
więc unia ma 12B

do tego double z ma 8B łącznie 20B, ale jest to poprawne tylko dla dokładności do 4 bajtów. Reszty jeszcze nie rozumiem.

0 głosów
odpowiedź 30 stycznia 2018 przez Nortalf Użytkownik (880 p.)

A więc dobrze. Poczytałem o allignach. I ja to wszystko rozumiem i w sumie rozumiałem od początku. 

Problem w tym, że float ma 4B double 8, więc jakkolwiek bym tego nie łączył, zawsze dokładność do jednego, dwóch i czterech bajtów wyjdzie taka sama.

No właśnie. Jedyną opcją jest to, żeby float miał 3 bajty a double 5. 
To daje 3x3+5=9+5=14 i zgadza się z odpowiedziami. Tylko jak to, skoro:

Pojedyncza precyzja ma 4 bajty. Czy ktoś mi to wyjaśni?

komentarz 30 stycznia 2018 przez mokrowski Mędrzec (155,460 p.)
Poczytaj o atrybutach pakowania. To często używane (dla embedded) rozszerzenie kompilatorów https://stackoverflow.com/questions/21092415/force-c-structure-to-pack-tightly

Dodatkowo typ int może mieć najmniej 16 bitów (o czym się dziś często zapomina pracując na maszynach 32 i 64 bit). http://en.cppreference.com/w/cpp/language/types

Podobne pytania

0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 20 sierpnia 2020 w C i C++ przez th3r4t3l Nowicjusz (120 p.)
0 głosów
1 odpowiedź 139 wizyt
–2 głosów
3 odpowiedzi 353 wizyt
pytanie zadane 1 stycznia 2016 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,579 zapytań

141,432 odpowiedzi

319,661 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...