[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 92

 
Mathemat:

どちらも正しいのですが、2番目の方が早いです。前者は常にすべての条件をチェックし、後者はすべての条件をチェックしない。そして、このように書いた方が、belongingと混同されないので良い。

または、中括弧でブロックを一度に囲む。

アドバイスありがとうございました。以前はEA 全般を正しく書くことを心がけていましたが、今はスピードに重点を置いています。:)
 
Mathemat:

どちらも正解

いいえ、コードはまったく平等ではありません。
 
条件を計算する必要がないのであれば、swith()で実行する方が簡単かもしれませんが...。
 
TheXpert: いいえ、コードは相互に排他的では全くありません。

では、cond_1, cond_2, cond_3 が互いに排他的でない場合、どうなるかを推測してみましょう...。

私は議論しているわけではなく、一般的にコードは異なる結果を与えます。しかし、条件が重ならなければ、結果は同じになるようです。

 
FAQ:
条件計算が必要ない場合は、swith()をスキップした方が楽かも...。
switchの場合、caseの値はintであるべきですが、cond_がintであるとは限りません。正直なところ、どのエントリーが良いのか/速いのか、というロジック自体に興味がありました。
 
paladin80:
switchの場合、caseの値はintであるべきですが、cond_はintとは限りません。正直、どのエントリーが良いのか/速いのか、ロジック自体に興味がありました。
条件を分け、使用頻度の高いものを上位に配置
 
paladin80:
switchの場合、caseの値はintでなければならず、cond_がintであるとは限りません。正直、どのエントリーが良いのか/速いのか、というロジック自体に興味がありました。

2つ目ですが、ネスティングに制約があります。

そのような可能性がある場合は、caseを使用するのがよいでしょう。

 
はい、スイッチ使ってます。相互排他的な条件として、私の理解では、このような現象があります。
//--- 1.
int x=1, y=1;
if (x==1)
{  if (y>0)  a=result_1;
   if (y<2)  a=result_2;
   if (y==1) a=result_3;
}
// a=result_3

//--- 2.
int x=1, y=1;
if (x==1)
{  if (y>0)            a=result_1;
   else if (y<2)       a=result_2;
        else if (y==1) a=result_3;
}
// a=result_1
 

y = 1のとき、まさにすべての条件を満たしていますね。 両者は相反するものではありません。

相互排他的とは、例えば、y<0, y==0, y>0などです。

 
Mathemat:

y = 1のとき、まさにすべての条件を満たしていますね。 両者は相反するものではありません。

相互排他的とは、例えば、y<0, y==0, y>0を指します。

OK、皆さん、快くご協力いただきありがとうございます。もう一度、組み合わせif-elseについてよく読んで、ここに書き込みを散らかさないようにします。相互排他的についてですが、y<0, y==0, y>1の ような感じでしょうか。