C++ 这到题的输出结果是什么

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:50:19
#include"iostream.h"
int main()
{
int a=0,b=1,c=2;
switch(a)
{
case 0:
cout<<a+b<<endl;
case 1:
{
a=a+b*c;
switch(a)
{
case 2:
cout<<b+c<<endl;
case 5:
cout<<(a=a+b*c)<<endl;
default:
c=c*2;
break;
}
}
default:
cout<<a+b+c<<endl;
break;
}
return 0;
}
4和9是怎样算出来的 请那位英雄给我讲讲

a是0,所以:
case 0:
cout<<a+b<<endl; //输出1.
因为没有break所以继续执行(case后必须有break才会跳出)
case 1:
{
a=a+b*c; //a=2;
switch(a)
所以:
case 2:
cout<<b+c<<endl; //输出3

因为没有break所以继续执行
case 5:
cout<<(a=a+b*c)<<endl; //输出4,并且a=4
因为没有break所以继续执行
default:
c=c*2; //C=4
break; //这只是跳出里面的switch
外面的switch照运行
default:
cout<<a+b+c<<endl; //输出4+1+4=9
运行结束

1
3
4
9

1
3
4
9
vc6下的结果

1
3
3
4

1
3
4
9
vc6下的结果
原因是 case 0:
cout<<a+b<<endl;
case 1:
{
a=a+b*c;
在cout<<a+b<<endl; 没有加break;
所以它执行完cout<<a+b<<endl;会执行a=a+b*c;