![]() |
|
Модераторы: bsa |
![]()
|
|
| Purple_Light |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
Часто встречаю следующее определение структур:
Раскажите пожалуйста, почему значения item именно такие (как я понимаю в шеснадцатеричном представлении)? Какие плюсы это дает, почему просто не использовать 1, 2, 3, 4 и т.п. Подозреваю, наверно потому, что можно производить логические опирации над item (например &, |, ^), но хочется исчерпывающей информации по этому вопросу. |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Такое для лучшей наглядности записывается так :
т.е каждый элемент енума ассоциирусется с определенным порядковым битом, чтоб в последствии можно было легко групировать и проверять битовой маской. |
||||
|
|||||
| Purple_Light |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
можно небольшой пример или ссылку на информацию, в плане практического использования. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вот условный пример :
Это сообщение отредактировал(а) mes - 24.12.2008, 14:10 |
|||
|
||||
| Purple_Light |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
на сколько я понимаю очень удобно использовать подобные структуры для задания начальных параметров, например:
если есть такая структура,
то можно в функцию с интерфейсом
можно посылать значения типа (насколько я понимаю):
но как их потом обрабатывать?
|
||||||||
|
|||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Owen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 5.7.2006 Где: Русь Репутация: нет Всего: нет |
Такое определение, можно сказать, задает битовую маску.
1) каждое значение является степенью двойки и задает какой-либо бит в значении. так: 1 = 0b1 2 = 0b10 4 = 0b100 потому использовать значение 100 (dec) не пройдет, тк 100 = 0b1100100 -- задает много битов и пересекается с 4 по 3му биту. 2) для работы с битовыми масками используем побитовые логические операции: и, или -- это основное, иногда -- исключающее или. |
|||
|
||||
| Purple_Light |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
Спасибо за объяснения.
mes спасибо за пример |
|||
|
||||
| Purple_Light |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
Снова поднимаю тему.
написал простую программу где
Все хорошо, до тех пор, пока я не пытаюсь передать несколько флагов в функцию. Например
где Flag1 и Flag2 пренадлежат соответственно enum Flags. В этом случае выдается ошибка cannot convert parameter 1 from 'int' to 'Flags' но я не хочу менять входящее значение на int, так как придется проверять входящее значение на валидность. Кроме того, если все такие изменить интерфейс функции на int, функция перестает определять флаги. Помогите объяснениями |
||||
|
|||||
| Owen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 5.7.2006 Где: Русь Репутация: нет Всего: нет |
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |