同じ動作をさせる条件において、多くの "or"(|)を避けることは可能でしょうか? - ページ 8

 
paladin80:

私のプログラムでは、ifがたくさんある場合、そもそもfalseを出すことが多い条件をつけて、この構文を使っています。

そして、たくさんのif-opsを確認する必要がある場合は、この方法を使います。
マキシムさん、ありがとうございます! でも、私の持っているさまざまな条件は、論理的にもパラメータ的にも比較できないので、それはダメなんです。
 
alsu:

いや、そういうわけにもいかない。まず、if()の後に何か、少なくともセミコロンだけでも(つまり空の演算 子)なければなりません。次に、あなたのelseオペレータは、どのifに属していることになるのでしょうか?もし、最後の1つだけを参照するのであれば(あなたが書いたように)、A、B、Cが偽で、Dの条件が真である場合にのみ、Actionが実行されます。ロジックを明確にするために、中括弧を置くことを常に推奨します。

私のハイライトが可能であれば、このようにするのが良いのではないでしょうか。

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

  

どうやって?可能ですか?-------------------------- コードで確認したところ、コンパイラが警告を出しました。

';' - セミコロン unexpected C:\Program Files

うまくいけば、警告も我慢できるかな!

 
borilunad:

もし、私が取り上げたものが可能であれば、そのようにするのが良いと思います。

どうやって?可能ですか?-------------------------- コードで確認したところ、コンパイラから警告が出ました。

';' - セミコロン unexpected C:\Program Files

うまくいけば、警告も我慢できるかな!

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

本当にありがとうございました。なんて簡単なんでしょう。

しかし、return(0)の後では何も動作しないので、このブロックを開始の最後に置く必要がありました。

 
スピードを計測した人は全くいないのか?)))
 
TheXpert:
どなたか、速度を全く計測していないのでしょうか?)))

測定してみる!

ついに測りました!17.26です!テスターで半年間小細工なしの最高のif()より10分も長いんだ。残念だけど、しょうがないよねー。どんどん掘っていくぞー。すべての人に感謝しますでも、まだ総括するのは早いですよー。

 
borilunad:

もし、私が取り上げたものが可能であれば、そのようにするのが良いと思います。

どうやって?可能ですか?-------------------------- コードで確認したところ、コンパイラから警告が出ました。

';' - セミコロン unexpected C:\Program Files

うまくいけば、警告も我慢できるかな!


誰かが間違った場所にカンマを置いただけの場合、警告が表示されます(空の';'演算子は あまり使われません)。この構造はうまくいっており、完全に合法です。
 
borilunad:
メジャーで測ってみる!

しかし、すべてのオプションを確認する必要があります。そうでなければ、間違っている可能性があります。
 
borilunad:

もし、私が取り上げたものが可能であれば、そのようにするのが良いと思います。

どうやって?可能ですか?-------------------------- コードで確認したところ、コンパイラから警告が出ました。

';' - セミコロン unexpected C:\Program Files

うまくいけば、警告も我慢できるかな!

警告が煩わしくなくなるように、使用します。{}

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

 
PapaYozh:

警告が目の中でごちゃごちゃしないように、{}を使います。{}

ありがとうございました。今、そのブラケットを試してみます
理由: