在C语言中使用switch语句的疑问
我有一个疑问:为什么我在在C语言中使用switch语句的疑问,c,switch-statement,C,Switch Statement,我有一个疑问:为什么我在I=3和I=7时得到输出 main() { int i; scanf("%d",&i); switch(i) { case 3: printf("message3"); default: if(i==4) printf("message4"); case 2:printf("message2"); break;
I=3
和I=7
时得到输出
main()
{
int i;
scanf("%d",&i);
switch(i)
{
case 3: printf("message3");
default:
if(i==4)
printf("message4");
case 2:printf("message2");
break;
case 1:printf("Message1");
}
}
案例3之后没有
中断
,默认
,案例3之后没有中断
,默认
,案例3之后没有中断
。因此,开关
也会失效并执行默认
语句。在案例3
之后,没有中断
。因此,switch
也会失败并执行default
语句。很好
i==3将打印消息3和消息2
i==4将打印消息4和消息2
每隔一个值i将打印message2
使用break
终止匹配处理 嗯
i==3将打印消息3和消息2
i==4将打印消息4和消息2
每隔一个值i将打印message2
使用break
终止匹配处理 舒巴姆。如果我重复你已经知道的,请原谅我。在某些方面,我正在扩展@Henk已经指出的内容
在switch
语句中,case
和default
标签的作用仅用于确定执行应从何处开始。一旦确定了第一个标签,其余标签就没有意义了。执行是“失败的”。因此,我们必须使用break
停止并退出开关
在您的代码中,如果i==3
,则case 3
是执行的第一行。然后执行case 3
、default
和case 2
,然后执行break
如果i
是3
以外的任何值,则执行默认值
,然后执行案例2
,然后退出开关
。我认为由于default
@Shubham的位置,人们永远无法执行案例1
。如果我重复你已经知道的,请原谅我。在某些方面,我正在扩展@Henk已经指出的内容
在switch
语句中,case
和default
标签的作用仅用于确定执行应从何处开始。一旦确定了第一个标签,其余标签就没有意义了。执行是“失败的”。因此,我们必须使用break
停止并退出开关
在您的代码中,如果i==3
,则case 3
是执行的第一行。然后执行case 3
、default
和case 2
,然后执行break
如果i
是3
以外的任何值,则执行默认值
,然后执行案例2
,然后退出开关
。我认为,由于default
的位置,default
案例的顺序并不决定该案例何时执行,因此人们永远无法执行案例1
。当开关变量与case表达式中的任何值不匹配时,将执行默认值
case
对于值大于的代码
1
在执行案例1之后的代码时,将打印“消息1”
2
在执行案例2之后的代码时,将打印“消息2”
3
在执行案例3
和故障排除至默认
和故障排除至案例2
后的代码时,将打印“消息3消息2”
4
在执行默认值
和故障排除后的代码时,将打印“message 4message2”至案例2
- 当执行
默认
案例和故障排除至案例2
有时我会先用默认值对开关进行编码
switch (ch) {
default: break; /* do nothing */
case '.': ch = ','; break; /* swap commas */
case ',': ch = '.'; break; /* and periods */
}
默认
案例的顺序不确定该案例何时执行。当开关变量与case表达式中的任何值不匹配时,将执行默认值
case
对于值大于的代码
1
在执行案例1之后的代码时,将打印“消息1”
2
在执行案例2之后的代码时,将打印“消息2”
3
在执行案例3
和故障排除至默认
和故障排除至案例2
后的代码时,将打印“消息3消息2”
4
在执行默认值
和故障排除后的代码时,将打印“message 4message2”至案例2
- 当执行
默认
案例和故障排除至案例2
有时我会先用默认值对开关进行编码
switch (ch) {
default: break; /* do nothing */
case '.': ch = ','; break; /* swap commas */
case ',': ch = '.'; break; /* and periods */
}
删除C++
标记并放置C
标记。我认为程序粘贴不正确。在案例1:
之后的switch语句中粘贴了相同的程序两次,我相信。如果我在其中所做的修改不正确,请发表您的评论。删除C++
标记,然后放置C
标记。我认为程序粘贴不正确。在案例1:
之后的switch语句中粘贴了相同的程序两次,我相信。如果我对它所做的修改不正确,请发表您的评论。