Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 00:14   #11
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Насколько я помню, union выделяет память под наибольший из объявленных в нём элементов, так вот даже когда я перешел от union к struct (смотри мой последний листинг) sizeof по-прежнему возвращает 4. (там как раз перед началом чтения и выводится он)
Код:
cout<<sizeof(f)<<endl;
Тут уж дело скорее чистом интересе, почему именно 4? Ведь грузим внутрь мы байт, а состоит поле из 8 интов. И вот как я память не считаю, ну никак у меня суммарный объём в 4 байта не получается

Последний раз редактировалось Farrel; 20.02.2011 в 00:19.
Farrel вне форума Ответить с цитированием
Старый 20.02.2011, 00:45   #12
Dayman
Форумчанин
 
Аватар для Dayman
 
Регистрация: 12.01.2011
Сообщений: 186
По умолчанию

Действительно интересно, но похоже, что зависит от объявленных типов.
Закономерность такая:
sizeof -> 1
Код:
typedef struct _bytes{
    unsigned char i1:1;
    unsigned char i2:1;
    unsigned char i3:1;
    unsigned char i4:1;
    unsigned char i5:1;
    unsigned char i6:1;
    unsigned char i7:1;
    unsigned char i8:1;
} bytes;
sizeof -> 2
Код:
typedef struct _bytes{
    unsigned char i1:1;
    unsigned char i2:1;
    unsigned char i3:1;
    unsigned char i4:1;
    unsigned char i5:1;
    unsigned char i6:1;
    unsigned char i7:1;
    unsigned char i8:1;
    unsigned char i9:1;
} bytes;
Lingua c++ non penis caninus est.
Dayman вне форума Ответить с цитированием
Старый 20.02.2011, 01:33   #13
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

а в чём разница между листингами?
Farrel вне форума Ответить с цитированием
Старый 20.02.2011, 17:57   #14
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Ничего удивительного - во втором примере 9 бит в байт не влезли, пришлось компилятору отвести под структуру 2 байта
Д_М вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с битовыми операциями sid Помощь студентам 4 05.12.2010 23:01
Interbase. Работа с BLOB-полями Sewell БД в Delphi 5 25.11.2010 08:46
параметрическое открытие OpenForm, работа с полями таблицы через .Fields Познающий Microsoft Office Access 10 16.06.2010 01:50
Программная работа с полями (формула) NomadV Microsoft Office Word 7 08.04.2010 15:21
БД Access и операции с полями WishNight БД в Delphi 3 05.04.2010 13:00