#include<stdio.h>
int main()
{
int n=0, i=2;
switch(1)
{
case 0:do
{
case 1: n++;
case 2: n++;
}while(--i > 0);
}
printf("n = %d",n);
}
我原本期望以上代码的输出结果为0,因为case 1和case 2均位于do while语句中,而该语句又嵌套在case 0内。Switch测试值为1,因此永远不会执行case 0,也就是说case 1和case 2也不会执行。
n的值却为4。有何解释吗?
do
循环中使用break
会退出循环,而不是退出switch
。 - Bathshebabreak
指的是最近的包含switch
、while
、do
或for
语句。而continue
则指最近的包含while
、do
或for
语句。(可能是IOCCC的素材。) - Keith Thompson