-1

据我所知,到目前为止,我能够使用switch语句并将其用作“或”运算符。例如:

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

它像

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

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

4

2 回答 2

7

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

num == 1 && num == 2 总是错误的。

这个问题有意义还是我错过了重点?

于 2012-12-30T04:42:40.003 回答
3

德摩根定律通常是在 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 有意义的唯一方法,因为变量不能同时是两个数字。

于 2012-12-30T07:02:02.507 回答