switch语句中break的用处

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:28:51
有这样一段程序:
void main()
{
int x;
cout<<"x=";
cin>>x;
switch(x)
{
case 1:
cout<<x+5<<endl;
case 2:
cout<<x-1<<endl;
case 3:
cout<<x*x<<endl;
default:
cout<<"Invalid data!"<<endl;
}
}
结果输入1时,case 2,case 3后面的语句也会执行,加上break后,就没问题了,为什么会这样呢?即使不加break,输入的x值与case后面的进行比较也应该不会出现这样的错误呀?请指教,多谢!
输入1时,输出为:6,0,1,Invalid data!

这是SWITCH语句的语法
一旦符合某个case 就执行后面“所有”的语句
都不符合的话就执行default

假如你不加break的话,它就会继续执行下面的语句,这是switch的特点,所以你要是只想它执行那一条语句的话,你就应该在每个case后面都加上break。否则就会如你所说的一样!

case 语句匹配你输入的值,如果加上break语句就只执行一个case
否则程序会从你匹配的值开始,不检查case的值直接执行语句,直到看到break
后,才中断执行

这是语法规定, 一旦满足case 后的条件 就会一直执行一下所有代码 知道SWITCH 结束. 所以只要写SWITCH 就一定要在每个case 后面加上一个 单独的break;