2011-10-25 74 views
-5

可以使用&||運算符使用switch聲明嗎?替換&&和||用switch語句

if(a==b & b==c) 

if(a==b || b==c) 

使用switch聲明,而不是if

+9

爲什麼你會想要? – millimoose

+5

你爲什麼想要? – Tim

+0

我認爲你的意思是'&&'而不是按位'&'? – erisco

回答

0

你不能。 switch聲明只允許一個條件。

+0

更糟糕的是,它們只允許一個單一的const條件。 – mydogisbox

0

開關用於將一個值與一系列其他值進行比較。你有7個比較,這使得它不適合一個案件。

-2

提示:表達的簡單來說你的功課if語句,那麼如果使用開關表達的,因爲if (test) something(); else otherthing();相當於switch (test) { case 0: otherthing(); break; default: something(); break;}和使用組成的複雜的情況。

1

唯一真正的選擇是創建一個位域,然後對每個組合都有一個開關,但對於任何大量的標誌,這是行不通的。如果問題是嵌套條件非常深的情況,則應該查看狀態機或重新構建您的體系結構。

0

&是不可能的。

如果你想比較一個變量與多個值,這是可能的。所以像if (a=='a' || a=='b')這樣的一些陳述可以這樣表示:

switch(b) 
{ 
    case 'a': 
    case 'b': 
     do_something(); 
     break; 

[...] 

    default: 
     do_something_else_if_you_want_to(); 
}