eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPakowanie struktur › Re: Pakowanie struktur
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neost
    rada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    Subject: Re: Pakowanie struktur
    Newsgroups: pl.comp.programming
    References: <n3n4m5$grf$1@node1.news.atman.pl>
    <a...@g...com>
    From: JDX <j...@o...pl>
    X-Enigmail-Draft-Status: N1110
    Organization: N/A
    Date: Thu, 3 Dec 2015 10:31:55 +0100
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Thunderbird/38.4.0
    MIME-Version: 1.0
    In-Reply-To: <a...@g...com>
    Content-Type: text/plain; charset=iso-8859-2
    Content-Transfer-Encoding: 8bit
    Lines: 53
    Message-ID: <56600c15$0$647$65785112@news.neostrada.pl>
    NNTP-Posting-Host: ip-94-42-34-111.multimo.pl
    X-Trace: 1449135125 unt-rea-b-01.news.neostrada.pl 647 94.42.34.111:51548
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:208926
    [ ukryj nagłówki ]

    On 2015-12-02 18:21, M.M. wrote:
    > On Wednesday, December 2, 2015 at 5:02:15 PM UTC+1, Borneq wrote:
    >> Jest jeszcze ilość bitów po dwukropku jak :8, :16 czy :32 - kiedy się
    >> stosuje?
    > Generalnie wtedy kiedy chcemy oszczędzać pamięć i przechowywać specyficzne
    > wartości, np. trzy liczby, każda zajmująca max 10 bitów. Bez tej sztuczki
    > potrzeba trzech typów 16-bitowych, czyli razem 48 bitów. Z tą sztuczką 30
    > bitów, które kompilator wyrówna do 32 - mamy oszczędność 16 bitów.
    Jesteś pewien, że wyrównywanie odbywa się na poziomie bitów a nie
    bajtów? Bo zgodnie z tym co napisałeś, poniższy programik na i386
    powinien wyświetlić "2 6 4", a nie wyświetla.

    ---------------------- Tnij tutaj --------------------------------
    #include <stdio.h>

    typedef struct {
    short int a;
    short int b;
    short int c;
    } my_struct;

    typedef struct {
    short int a:10;
    short int b:10;
    short int c:10;
    } my_fancy_struct;

    int main(int argc, char *argv[])
    {
    printf("%d\t%d\t%d\n", sizeof(short int), sizeof(my_struct),
    sizeof(my_fancy_struct));

    return 0;
    }
    ---------------------- Tnij tutaj --------------------------------


    Wynik:
    D:\WorkDir>gcc --version
    gcc (i686-win32-sjlj-rev0, Built by MinGW-W64 project) 5.2.0
    Copyright (C) 2015 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    D:\WorkDir>gcc -O3 -s -o struct_test.exe struct_test.c

    D:\WorkDir>struct_test
    2 6 6

    D:\WorkDir>


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: