Форум программистов, компьютерный форум CyberForum.ru

Битовые поля и sizeof - C++

Восстановить пароль Регистрация
 
AceOfSpades
41 / 40 / 3
Регистрация: 14.08.2012
Сообщений: 231
28.02.2014, 18:15     Битовые поля и sizeof #1
Почему sizeof такого битового поля выдает 4 байта?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma pack(push, 1)
struct status
{
    unsigned f1:1;
    unsigned f2:1;
    unsigned f3:1;
    unsigned f4:1;
    unsigned f5:1;
    unsigned f6:1;
    unsigned f7:1;
    unsigned f8:1;
};
По идее, должен быть 1 байт. В чем нюанс?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 18:15     Битовые поля и sizeof
Посмотрите здесь:

C++ битовые поля!!
C++ Битовые поля
Битовые поля C++
C++ Битовые поля
C++ Битовые поля
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
28.02.2014, 18:36     Битовые поля и sizeof #2
Каким компилятором пользуешься? Может он pragma-pack не понимает? На gcc размер нормально равен 1 байту
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
28.02.2014, 19:40     Битовые поля и sizeof #3
C++
1
2
3
4
5
6
7
8
9
10
11
struct status
{
    unsigned char f1:1;
    unsigned char f2:1;
    unsigned char f3:1;
    unsigned char f4:1;
    unsigned char f5:1;
    unsigned char f6:1;
    unsigned char f7:1;
    unsigned char f8:1;
};
по умолчанию предполагается int, а оно занимает 4 байта
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,145
Записей в блоге: 26
28.02.2014, 22:07     Битовые поля и sizeof #4
Там стоит pragma pack, а потому структура должна иметь размер 1 байт
Yandex
Объявления
28.02.2014, 22:07     Битовые поля и sizeof
Ответ Создать тему
Опции темы

Текущее время: 08:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru