改下程序 #include
int main()
{
int k=0;
char c='A';
do
{
switch(c++)
{
case 'A': k++; printf("k={%d}\n", k); break;
case 'B': k--; printf("k=[%d]\n", k);
case 'C': k+=2; printf("k={%d}\n", k); break;
case 'D': k=k%2; printf("k=[%d]\n", k);continue;
case 'E': k=k*10; printf("k={%d}\n", k); break;
default: k=k/3; printf("k=[%d]\n", k);
}
k++; printf("k=(%d)\t", k);
}while(c<'G');
printf("k=%d\n", k);
}
编译下 看输出
先执行 switch 语句 k++; k=1;
在执行 下面的k++ ; k=2;
然后回到switch k-- ; k=1;
由于没有 break; 忽略了 case 标号 继续 k=3;
执行下面的语句 k++ ; k=4;
在执行 语句 k+=2; k=6;
执行下面的语句 k++; k=7;
执行语句 k%=2; k=1;
由于是 continue; 语句 中断后继续执行
k*=10; k=10;
执行下面的语句k++ ; k=11;
执行语句 k/=3; 隐式类型转换 先提升为double k=3.666 后又转为int k=3;
执行 k++; k=4;
所以答案为4;