| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > булеановские переменные |
| Автор: 586 17.7.2006, 06:56 |
| В коде несколько булеановских переменных. Как их лучше реализовать? |
| Автор: SergeCpp 17.7.2006, 08:27 |
| Это зависит от того, для чего они используются. В Вашем случае — для чего? Общего ответа, конечно же, нет. В одном случае удобнее флаги, в другом — несколько переменных. Всё зависит от специфики кода, приведите его... |
| Автор: takedo 17.7.2006, 08:42 |
| сначала с масками работать проблематично, но потом привыкаешь. Плюс этого состои в том, что ты всегда можешь перезадать маску, она в основном ведь объявляется так: #define maska 0x7E |
| Автор: slava72 17.7.2006, 10:21 | ||
Есть еще вариант битовых полей ;)
В этом случае не нужно думать о масках в побитовых операциях 2takedo для целочисленных констант лучше enum-ы, чем #define |
| Автор: DeadSoul 17.7.2006, 22:10 | ||
Почти всегда стоит выбирать
Аргументация: проще сопровождение |
| Автор: Любитель 17.7.2006, 22:30 |
| Как вариант - std::bitset. И работать приятно, и пакерится. |
| Автор: Никто 18.7.2006, 10:49 |
| Можно представить переменную в виде последовательности битов,при этом экономится память. |
| Автор: 586 19.7.2006, 09:07 | ||
Меня интересует вот что:
Что выполнится быстрее? А если переменных будет 8? Что быстрее: b|=1 или b=1 b|=~1 или b=0 (b&1) или (b) А если в первой функции поставить DWORD вместо BYTE, а во второй оставить всё как есть? Выигрываю ли я, задавая общую переменную? |
| Автор: slava72 19.7.2006, 10:58 |
| быстрее будет int (по определению )) А код в том виде, в котором он есть a)-неэффективен б)-некорректен (не переносим) неэффективен - для char (а возможно и для wchar_t) более быстро проверять по таблице не переносим: Об этом явно говорит Страус - в диапазоне [A..Z] могут быть лишние символы и/или потерятся что-то нужное чем не устраивают функции isalpha/isdigit ? или их самописные аналоги ;) |
| Автор: SergeCpp 19.7.2006, 13:21 |
http://en.wikipedia.org/wiki/EBCDIC |
| Автор: UnrealMan 19.7.2006, 13:27 |
Вот я только её и знаю. |
| Автор: UnrealMan 19.7.2006, 13:53 |
| Мда, почитал статью и лишний раз убедился: EBCDIC – это задрипок, который почти нигде не используется. |
| Автор: Nuzur 19.7.2006, 18:01 |
| UnrealMan, ну рад за вас что вы наконец-то поняли А на сабж точного ответа нет, если их 2-ве то конечно отдельные переменные, если их 10000 то лучше про биты думать. |
| Автор: Earnest 20.7.2006, 07:10 |
| Да наплевать, какая реализация. Написать нормальный интерфейс в виде get\set (которые тут недавно ругали), и переписывай реализацию хоть через день, под настроение. |
| Автор: 586 20.7.2006, 07:26 |
| тема закрыта |
| Автор: chaos 20.7.2006, 08:31 | ||
можно поюзать STL'евски bitset |