是否可以使用switch语句进行'和'操作

时间:2012-12-30 04:34:27

标签: c gcc switch-statement

据我所知,到目前为止,我可以使用switch语句并将其用作'或'运算符。例如:

switch(num)
case 1:
case 2:
 printf("One or Two");

就像

一样
if(num==1 || num==2)
 printf(""One or two);

是否可以修改switch语句并将其用作AND而不是OR?

2 个答案:

答案 0 :(得分:7)

变量不能同时保存两个值。

num == 1&& num == 2总是假的。

问题是否有意义,还是我错过了这一点?

答案 1 :(得分:3)

De Morgan's law通常是在OR和AND之间进行转换的关键。作为C表达式,它是

!( A || B ) == ( !A && !B )

switch语句可能有default个案,在没有满足其他条件时采用。如果它是你已经给出的OR案件的唯一替代品,那么由于与OR相反,它自动成为De Morgan的AND案例。

switch(num) {
case 1:
case 2:
    printf("One or Two\n");
    break;
default:
    printf("Not one AND not two\n");
    break;
}

如前所述,这是使AND有意义的唯一方法,因为变量不能同时为两个数字。