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

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

Войти
Регистрация
Восстановить пароль
 
rk8673
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 4
#1

Как сделать тип enum в структуре беззнаковым - C++

29.06.2016, 10:28. Просмотров 246. Ответов 4
Метки нет (Все метки)

Почему элемент Type структуры BracketBlock signed и как его сделать unsigned, не увеличивая количество бит Type?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
enum BracketType
{
    NONE    = 0,
    OPEN    = 1,
    CLOSE   = 2
};
 
struct BracketBlock
{
    unsigned char   Number:6;
    BracketType     Type:2;     // сейчас -2, -1, 0, 1  ; нужно 0, 1, 2, 3  
};
 
int main()
{
    BracketType bt;
    bt = CLOSE;
    cout << bt << endl;
 
    BracketBlock a, b;
    a.Type = OPEN;
    b.Type = CLOSE;
    cout << OPEN << "\t" << a.Type << endl << CLOSE << "\t" << b.Type << endl;
}
В консоли:
2
1 1
2 -2
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2016, 10:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать тип enum в структуре беззнаковым (C++):

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

Сделать char беззнаковым - C++
Какой директивой сказать компилятору, чтобы он считал тип char по умолчанию как unsigned? Надо для адекватного сравнения кодов ASCII....

Как результат функции конвертировать в тип Enum? - C++
Кто может подсказать как мне результат функции конвертировать в тип Enum, тоесть чтобы результат функции сравнивало со значениями в этом...

Тип enum и нумерация - C++
Всем здрасьте ! У меня есть тип enum, который описывает что-то: enum NUM { X1, X2, X3, ...} Каждый Х, имеет свой смысл и число,...

Как сделать несколько операторов в структуре? - C++
Возможно я просто очень плохо пока разобрался в операторах, но все же , есть такая структура struct My_Struct { double Point_x;...

Заголовочный файл и тип enum - C++
Задание состоит в том, что надо программу разбить на три части: заголовочный файл Factor.h, у меня он такой получился: #include...

4
zss
Модератор
Эксперт С++
6535 / 6097 / 2007
Регистрация: 18.12.2011
Сообщений: 15,859
Завершенные тесты: 1
29.06.2016, 10:42 #2
C++
1
2
3
4
5
struct BracketBlock
{
    unsigned   Number:6;
    unsigned   Type:2;   
};
1
ct0r
Игогошка!
1776 / 678 / 42
Регистрация: 19.08.2012
Сообщений: 1,294
Завершенные тесты: 1
29.06.2016, 10:43 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от rk8673 Посмотреть сообщение
Почему элемент Type структуры BracketBlock signed
Потому что это implementation defined, и раз у тебя -2, то это признак винды и студии какой-нибудь
Явно underlying тип можно указать так например:
C++
1
enum BracketType : uint8_t
1
rk8673
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 4
29.06.2016, 11:48  [ТС] #4
В первом случае все заработало, но хотелось, что бы тип BracketType был указан.
Во втором тоже работает, но с ограничением. В cout нужно приводить тип к (int), иначе ошибка.
Я указал вместо
C++
1
enum BracketType : uint8_t
это
C++
1
enum BracketType : unsigned
и все заработало как надо.

Всем большое спасибо. Выручили.

ЗЫ Неужели это из-за
Цитата Сообщение от ct0r Посмотреть сообщение
это признак винды и студии какой-нибудь
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
29.06.2016, 13:03 #5
Цитата Сообщение от rk8673 Посмотреть сообщение
Неужели это из-за
Нет, это из-за
Цитата Сообщение от ct0r Посмотреть сообщение
implementation defined
1
29.06.2016, 13:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2016, 13:03
Привет! Вот еще темы с ответами:

Перечислимый тип enum ,что это? - C++
Не пойму зачем он нужен,если все равно он возвращает целые числа? Как обращаться именно к имени(string) элемента типа enum?К примеру...

Неопределенный тип переменной в структуре - C++
Есть некоторая структура в одной переменной которой необходимо хранить переменные разных типов (т.е. там может лежать &quot;строка&quot; или число...

Культура оформления кода: что такое enum? Где, когда и для чего уместно применять этот тип? - C++
не понял за что отвечают эти две строчки: enum ChosenOperation { ADD = 1, SHOW, SEARCH, EXIT }; enum SearchingCriteria { NAME =...

Как сделать функцию, которая тип данных использует как параметр? - C++
Хочу сделать функцию function(&quot;переменные&quot;, &quot;тип данных&quot;). Можно ли это реализовать? А именно, более подробно что-то в этом роде: ...


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

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

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