C语言,希望解释一下这个的意思?

#include <stdio.h>
int main()
{
int a=1;
switch(a)
{
case 3||4:printf("ok\n");break;
case 4:printf("perfect\n");break;
default:printf("no\n");break;
}
return 0;
}

这个是用来实现多分支语句功能的程序。追问

所以结果为什么是OK呢

追答

这是因为case 后面,只能是一个常数,刚好这里3||4是一个常数表达式,所以,编译就通过的。不过程序的理解可不是“如果它是3或4”而是逻辑表达式的值3||4为"真"(因为3和4都不是0,所以它的值为Ture || True =True,(即1),
更何况,退一万步说,如果它是可以用来检测是否为4,那么,下一个case 4又如何呢?

追问

好的,谢谢

温馨提示:答案为网友推荐,仅供参考