Ozy*_*ias -2 c c++ for-loop switch-statement
为什么案例2在此for循环中被评估两次?
for (int x = 0; x <4; x++)
{
switch (x)
{
case 2: printf("%d", x);
case 0: printf("%d", x);
default: break;
case 3: printf("%d", x);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了补充一点,这不是一段合法的代码.上周我的朋友工作考试中出现了一些问题.
案例2没有得到两次评估:它只被评估一次.但是,如果不使用break语句结束案例,而不是离开switch,则继续执行下一个案例.
换句话说,当x为2时,执行跳转到case 2并调用printf("%d", x)x = 2.然后,执行进入情况0,并且printf("%d", x)使用x的调用仍然等于2.然后,执行进入default情况,在那里它命中一个break语句最后离开了switch.