(27)条件语句

来源:互联网 发布:激萌软件下载 编辑:程序博客网 时间:2024/05/17 04:55
C++语言提供了两种按条件执行的语句:一种是if语句,它根据条件决定控制流。另外一种是switch语句,它计算一个整型表达式的
值,然后根据这个值从几条执行路径中选择一条。

if语句

作用:判断一个指定的条件是否为真,根据判断结果决定是否执行另外一条语句。
if语句有两中形式:一种含有else分支,另外一种没有。
if(condition)
statement
if else语句的形式:
if(condition)
statement
else
statement2
允许if语句嵌套,如:
if(condition)
statement
else if(condition)
statement2
也可以在statement中使用if语句。如果代码中既有if又有if else语句如何分辨if else匹配?就C++而言,它规定了else与离它最近
的尚未匹配的if匹配,从而消除了程序的二义性。

在if语句中通常用花括号来控制执行路径:
if(grade%10>=3){  if(grade%10>7)     lettergrade+='+';} else    lettergrade+='-';
语句属于块,意味着语句一定在块的边界之内,因此内层if语句在关键字else前面的那个花括号已经结束了。else不会再作为内层if的一部分。此时,最近的尚未匹配的if是外层if,也就是我们希望else匹配的那个。

switch语句

switch语句提供了一条便利的途径使得我们能够在若干固定选项中作出选择,如:
int i=0;cin>>i;switch(i){  case 1:cout<<"1"<<endl;break;  case 2:cout<<"2"<<endl;break;  case 3:cout<<"2"<<endl;break;  default:cout<<"默认"<<endl;break;}
case关键字和它对应的值一起被称为case标签。case标签必须是整型常量表达式,任何两个case标签的值不能相同,否则会引发错误,default也是一种特殊的case标签。

如果某个case标签匹配成功,将从该标签开始往后顺序执行所有case分支,除非程序显示地中断了这一过程,否则直到switch的结尾处才会停下来要想避免执行后续case分支的代码,在下一个case标签之前应该有一条break语句。

default标签
如果没有任何一个case标签能匹配上switch表达式的值,程序将执行紧跟在default标签后面的语句。switch结构以一个空default标签作为结束,则该default标签后面必须跟上一条空语句或一个空块。

不要在switch内部定义变量,否则有可能会略过含有变量定义的代码,如果在某处一个带有初值的变量位于作用域之外,在另一处该变量位于作用域之内,则从前一处跳转到后一处的行为是非法行为。
0 0