switch语句在多个判断条件的时候可以代替if语句
下面举个例子来展示两者的区别和各自的优势
if语句的实现
int main()
{
int i;
cout << "请输入今天是星期几:";
cin >> i;
if(i==1)
cout << "今天是星期1"<<endl;
else if(i==2)
cout << "今天是星期2" << endl;
else if (i == 3)
cout << "今天是星期3" << endl;
else if (i == 4)
cout << "今天是星期4" << endl;
else if (i == 5)
cout << "今天是星期5" << endl;
else if (i == 6)
cout << "今天是星期6" << endl;
else if (i == 7)
cout << "今天是星期日" << endl;
else
cout << "错误的输入" << endl;
}
可以看见在有很多判断情况的时候,用if语句就看着很乱
因此要用switch语句来简化
但是使用switch语句有一个特别需要注意的地方,我们来用下面的例子进行说明。
int main()
{
int i;
cout << "请输入今天是星期几:";
cin >> i;
switch (i)
{
case 1:cout << "今天是星期1" << endl;
case 2:cout << "今天是星期2" << endl;
case 3:cout << "今天是星期3" << endl;
case 4:cout << "今天是星期4" << endl;
case 5:cout << "今天是星期5" << endl;
case 6:cout << "今天是星期6" << endl;
case 7:cout << "今天是星期7" << endl;
default:cout << "错误输入" << endl;
}
}
如果输入2,则C++语言就会把case2以下的所用情况都会进行输出,结果如下:

以上这种情况在专业术语中称之为“贯穿”因此为了避免贯穿,要在每个case中加入一个break进行语句的跳出,如下所示:
int main()
{
int i;
cout << "请输入今天是星期几:";
cin >> i;
switch (i)
{
case 1:cout << "今天是星期1" << endl; break;//这个地方可以不写大括号{},这是switch语句特殊的地方
case 2:cout << "今天是星期2" << endl; break;//case后面必须跟整数
case 3:cout << "今天是星期3" << endl; break;
case 4:cout << "今天是星期4" << endl; break;
case 5:cout << "今天是星期5" << endl; break;
case 6:cout << "今天是星期6" << endl; break;
case 7:cout << "今天是星期7" << endl; break;
default:cout << "错误输入" << endl; break;//default实际上就是else
}
system("pause");
}
因此我们在用switch语句的时候要根据是否需要贯穿灵活地选择是否使用break。
当然switch语句不能完全替代if语句,只能在特殊的if情况下替代if,
这里需要特别注意的是:
①switch语句中case后面只能跟一个整数,不能是小数
②case后面只能判断等于的情况不能判断大于或小于的情况
因此在上述情况下只能用if语句!

1万+

被折叠的 条评论
为什么被折叠?



