2011-10-25 77 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(); 
}