Возможно ли избегнуть много "или" (||) в условиях, вызывающих одно и то же действие? - страница 8

 
paladin80:

Я в своих программах при множестве if-ов использую такую контрукцию, при этом на первых местах ставлю условия которые чаще других будут давать false:

А если уж надо проверить очень много if-ов, то примерно так:
Спасибо, Максим! Но это не годится, т.к. различные условия у меня не сравнимы по логике, ни по параметрам!
 
alsu:

Не, так не выходит. Во-первых, после if() что-то должно стоять, хотя бы просто точка с запятой (т.е. пустой оператор). Во-вторых, к какому из if относится по задумке ваш else? Если только к последнему (как написано у вас), то Action выполнится только, если условие D истинно при условии, что А,В и С ложны. Желательно всегда расставлять фигурные скобки, чтобы четко видеть логику.

Если выделенное мною возможно, тогда хорошо бы сделать так:

if (!A && !B && !C && !D) ;//пустой оператор
else Action();

  

Как? Возможно? -------------------------- Проверил в коде, компилятор даёт предупреждение;

';' - semicolon unexpected C:\Program Files\ 

Если будет работать, так можно мириться и с предупреждением?!

 
borilunad:

Если выделенное мною возможно, тогда хорошо бы сделать так:

Как? Возможно? -------------------------- Проверил в коде, компилятор даёт предупреждение;

';' - semicolon unexpected C:\Program Files\ 

Если будет работать, так можно мириться и с предупреждением?!

 

if (!A && !B && !C && !D) return(0); //закончение действия программы
else Action();
 
paladin80:

 

Большое спасибо! Надо же как просто!

Правда, пришлось этот блок поставить в конец старта, поскольку return(0) не давал работать ничему больше после себя. 

 
Кто-нибудь скорость мерял вообще? )))
 
TheXpert:
Кто-нибудь скорость мерял вообще? )))

Сейчас сниму мерку!

Замерил, наконец! Получилось 17.26! Это на 10 минут дольше, чем в лучшем варианте с if() без ухищрений за полгода в тестере. Сожалею, но ничего не поделаешь! Буду продолжать копать! Спасибо всем! Но рано пока подводить итог!

 
borilunad:

Если выделенное мною возможно, тогда хорошо бы сделать так:

Как? Возможно? -------------------------- Проверил в коде, компилятор даёт предупреждение;

';' - semicolon unexpected C:\Program Files\ 

Если будет работать, так можно мириться и с предупреждением?!


предупреждение дается на случай, если кто-то просто не там поставил запятую (пустой оператор ';' не так уж часто используется). Такая конструкция работает и вполне легальна.
 
borilunad:
Сейчас сниму мерку!

Только проверять надо все предложенные варианты. Иначе можно ошибиться
 
borilunad:

Если выделенное мною возможно, тогда хорошо бы сделать так:

Как? Возможно? -------------------------- Проверил в коде, компилятор даёт предупреждение;

';' - semicolon unexpected C:\Program Files\ 

Если будет работать, так можно мириться и с предупреждением?!

Чтобы предупреждения не мозолили глаза используйте: {}

if (!A && !B && !C && !D) {} //пустой оператор
else Action();

 
PapaYozh:

Чтобы предупреждения не мозолили глаза используйте: {}

 

Спасибо! Сейчас попробую эти скобочки!
Причина обращения: