69,371
社区成员
发帖
与我相关
我的任务
分享
int main()
{
int n=3;
switch(n)
{
default:cout<<"default"<<endl;
case 2:cout<<"2"<<endl;
case 3:cout<<"3"<<endl;
case 4:cout<<"4"<<endl;
case 5:cout<<"5"<<endl;
}
return 0;
}
3,4,5
default
2
3
4
5
int main()
{
int n=6;
switch(n)
{
default:cout<<"default"<<endl;
case 2:cout<<"2"<<endl;
case 3:cout<<"3"<<endl;
case 4:cout<<"4"<<endl;
case 5:cout<<"5"<<endl;
}
return 0;
}
岂不是: 进入switch以后,先case2,不符合,再case3,不合符,再case4,不合符,再case5,不符合,然后default
之后因为没有break,所以case2跳过判断直接执行,case3跳过判断直接执行,case4跳过判断直接执行,case5跳过判断直接执行。
换句话说,case 2其实被执行了两遍,第一遍是刚进入switch的时候,判断是否符合条件,第二遍是default执行完以后,不判断case的条件而直接执行cout<<"2"。
是这样的吗?