2011-07-07 17 views
3

次のif =文をswitch文に変換するにはどうしたらいいですか(41-49)。出来ますか?if文をswitch文に変換する

if (num < 50 && num > 40) 
{ 
    printf("correct!"); 
} 
+2

どのような言語ですか? C? C++?他に何か? – Oded

+3

そしてそのような式を_why_変換したいですか? – Oded

答えて

0
bool criteria1 = (num < 50 && num > 40); 
switch criteria1: ... 

怖い...マルチレベルの意思決定のネットワークをもたらすことができますか?

+0

はこれを行う唯一の方法ですか?別の方法がありますか?代わりに条件をケースに付けることはできますか?ちょっと興味があるんだけど。 – wadafarfar

+0

@wadafarfar、あなたが望む言語が(|)を評価するときにtrue | false値を返すことをサポートしていれば、それらはswitch文によって見えます。 'switch(condition)true:code1; false:code2;終了;は動作します。そのためのテストを書くのですか? –

0

CまたはC++(printfを使用しているので、これを仮定します)では、選択肢ごとに列挙する必要があります。

switch/caseifの唯一の違いは、範囲をチェックする代わりに計算されたgotoに変換する可能性があることです。 switch/caseがサポートされている範囲であれば、この最適化の可能性を開こうとする目的を無効にします。

1

スイッチのすべてのケースを列挙する必要があります。コンパイラはこれをジャンプテーブルに変換するため、範囲を使用できません。ただし、複数のケースで同じコードブロックを使用することができます。これは、必要なものに近い場合があります。

switch(num) { 
    case 41: 
    case 42: 
    case 43: 
    case 44: 
    case 45: 
    case 46: 
    case 47: 
    case 48: 
    case 49: 
     printf("correct!"); 
     break; 
    default: 
     break; 
} 
1

この内容はどうですか?

switch ((num-41)/9) { 
case 0: 
    printf("correct!"); 
    break; 
}