Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 19:17   #1
krugolet
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 11
По умолчанию Операторы сравнения

Здравствуйте!

Подскажите пожалуйста, можно ли комбинировать операторы сравнения следующим образом:
Код:
if(a == 0x10 &&  b == (0x11 || 0x12 || 0x13));
//знаю, что писать правильнее так:
if(a == 0x10 && ( b == 0x11 || b == 0x12 || b == 0x13));
и вообще, есть ли какая упрощённая запись, если нужно сравнить много значений, например: если а == 0х10...0х15
чтобы не писать так:
Код:
if(a == 0x10 || a == 0x11 || a == 0x12 
|| a == 0x13 || a == 0x14 || a == 0x15);
krugolet вне форума Ответить с цитированием
Старый 30.03.2012, 19:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как вариант:
Код:
int a[6]={0x10, 0x11, 0x12, 0x13, 0x14, 0x15};
int k;
for(k=0;k<6 && a[k]!=n;k++);
if(k<6) {Нашлось число из списка}
Где n - искомое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2012, 20:00   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Комбинировать так нельзя, потому что иначе сначала вычислится значение в скобках:
Код:
(0x11 || 0x12 || 0x13)
где каждое значение будет приведено к логическому типу (получится везде true) и в результате получим b == true. (Точнее, изначально будет приведено к логическому 0x11, а больше и не понадобится - оператор || уже сможет вернуть true).

Ну а более простой вариант - либо как написал Stilet, либо запихать в какой-нибудь вектор (а еще лучше - в множество) и запускать в нем функцию поиска. Второй вариант проще в использовании и нагляднее, т.к. не надо писать свой код поиска, а только вызвать одну функцию; первый - менее накладный, и при этом не такой уж и сложный в реализации.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 30.03.2012, 20:37   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Также, для случаев вида а == 0х10...0х15 можно делать так
Код:
if (a >= 0x10 && a <= 0x15)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 30.03.2012, 21:05   #5
krugolet
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 11
По умолчанию

Благодарю за ответы!
krugolet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка сравнения R71MT Win Api 11 20.06.2011 00:15
Функция сравнения Ksy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.05.2011 13:07
Сравнения изображений ВасяСВВ Общие вопросы C/C++ 0 05.04.2011 17:17
Функция сравнения sanya94 Общие вопросы C/C++ 3 02.12.2010 22:24