Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AceOfSpades
44 / 43 / 3
Регистрация: 14.08.2012
Сообщений: 247
#1

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

28.02.2014, 18:15. Просмотров 323. Ответов 3
Метки нет (Все метки)

Почему 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 байт. В чем нюанс?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 18:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовые поля и sizeof (C++):

Битовые операции, битовые поля. - C++
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые поля. Поля без типа и имени - C++
Вчера сделал очень интересную и болезненную ошибку (с точки зрения времени, так как искал я ее долго)... представьте структуру (битовое...

Битовые поля - C++
Подскажите пожалуйста, как мне сохранить две цифры с помощью битовых полей?

Битовые поля - C++
В приложении 1 есть пример использования битовых полей. В выделенной строке структуре присваивается бит, полученный из функции. (Кстати,...

битовые поля!! - C++
добрый вечер! имеется класс представления битовых полей: #ifndef HTBITFIELDS #define HTBITFIELDS #include <iostream> using...

Битовые поля - C++
Здравствуйте, расскажите мне пожалуйста как происходят операции с битами. Мне необходимо получить 1 байт, разделить его на 2 битовых поля...

3
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,641
Записей в блоге: 28
28.02.2014, 18:36 #2
Каким компилятором пользуешься? Может он pragma-pack не понимает? На gcc размер нормально равен 1 байту
0
zss
Модератор
Эксперт С++
6531 / 6093 / 2007
Регистрация: 18.12.2011
Сообщений: 15,845
Завершенные тесты: 1
28.02.2014, 19:40 #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 байта
0
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,641
Записей в блоге: 28
28.02.2014, 22:07 #4
Там стоит pragma pack, а потому структура должна иметь размер 1 байт
0
28.02.2014, 22:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 22:07
Привет! Вот еще темы с ответами:

С++ битовые поля - C++
Написал код в котором используется характеристический вектор, все компилиться и вроде бы все замечательно, но мне нужен 20битный тип, а не...

Битовые поля - C++
Добрый вечер! Помогите, пожалуйста, найти ошибку в программе. Компиляцию проходит безошибочно, но данных не выдает при запуске. ...

битовые поля - C++
пользователь вводит с клавиатуры 2 беззнаковых длинных целых числа a, b. Вывести на консоль множества A, B, которые представляют битовые...

Битовые поля - C++
Классы для хранения байта (в виде битовых полей)1. Создать такой метод, чтобы ноль перемещался от разряда к разряду слева направо. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru