powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Битовые операции с типом bool
10 сообщений из 35, страница 2 из 2
Битовые операции с типом bool
    #39078121
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

построчно -как и писал топикстартер - будет нагляднее и удобнее - закомментарить при необходимости или логирование добавить для каждого вызова
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078122
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Anatoly Moskovskyda17,

Код: plaintext
1.
2.
3.
typedef int Bool;
Bool x = 2;
if ((x | true) == true) ... // не сработает, а с честным bool - сработает, как и должен


в данном случае true в скобках как 1 рассматривается? Т.е. я правильно понимаю, (3) == true это будет false?
Да. int более широкий тип чем bool. Вот bool и приводится к int. Но просто лучше такой код не писать. Это игра с огнём и запутает даже опытного программиста. Анатолий это привёл просто как пример, ИМХО.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078124
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилpetrav,

построчно -как и писал топикстартер - будет нагляднее и удобнее - закомментарить при необходимости или логирование добавить для каждого вызова
Да, наверное. Тем более сегодня у функций нет побочных эффектов, завтра будут. А про построчно — это я писал.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078135
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А собственно говоря зачем вам битовый OR/AND?
Вот если бы битовый XOR я бы понял, т.к. не логического аналога.
А все остальные операции есть (&&,||,!). Поэтому их и используйте.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078241
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Не, в одну строчку плохо будет смотреться. Там несколько проверок датчиков, если все норм., то флаг остается false ...
Если в теле if() всегда только flResult = true то можно просто убрать {}
Код: plaintext
1.
2.
3.
4.
bool flResult = false;
if( firstCond() )   flResult = true;
if( secondCond() )   flResult = true;
...


ИМХУ так код читается лучше.

Есть подознение что |= возникло в результате переделки кода.
flResult изначально был int и содержал битовые флаги
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#define FLAG_FIRST 1
#define FLAG_SECOND 2
...

int flResult = 0;
if( firstCond() )   flResult |= FLAG_FIRST;
if( secondCond() )   flResult |= FLAG_SECOND;
...

Затем от флагов избавились за ненадобностью, а |= забыли на = поправить.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078252
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, код есть результат рефакторинга, автор я так понял позаимствовал прием из ряда библиотек QT где он используется для установки битовых флагов.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078254
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы эти библиотеки активно используем. Просмотрел все вхождения, в контексте bool данную операцию в исходниках библиотек не встретил(не всех конечно)
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078260
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже вспомнил теперь, откуда это пришло, года два назад в библиотеке QT service были ошибки при работе на x64 архитектуре(что-то с размерами sockadd_in), которые разработчики не торопились фиксить. Долго тогда пришлось все это разбирать, а там эта конструкция |= часто где встерчалась в битовом контексте.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078262
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, в этом и был вопрос "зачем". Теперь понимаю, что абсолютно не нужно это и вредно.
...
Рейтинг: 0 / 0
Битовые операции с типом bool
    #39078275
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для "нечестного bool" можно создать функцию или макрос
isTrue которая проверяет на не равенство арифметическому 0.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Битовые операции с типом bool
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]