C++ Primer 学习笔记-第5章(语句)

此笔记仅记录容易忘记的知识点,对于已经掌握或者比较容易的知识点,此笔记将不涉及。


 5.1 简单语句

一个表达式,后边添加上;即是简单语句;需要注意以下几点内容:

  • 分号问题:不要漏写也不要多写分号,一个语句后边多加一个分号有时候代表的是一个空语句(有时因为语法问题,需要添加空语句)
  • 符合语句块:实际上就是for循环里面的{   }, 将要执行的语句使用{}括起来

 5.2 语句作用域:

         就是在if,switch,for,while等循环内定义的变量,仅在循环体内有用及可见。 

 5.3  条件语句:

 5.3.1 条件语句 if:

  • if,if-else,if-else if,注意在函数体内的语句使用{}括起来,以保证其能正确运行;
  • 悬垂else: 当if语句中有多个else的情况,C++会自动匹配,将距离else最近的if匹配在一起,或者使用{}进行强制隔离

                        

 5.3.2 条件语句 switch:

  • 注意:当switch语句中,满足其中一个case,那么若后边未添加case的时候,程序会自动执行后边所有的case;
  •            因此注意break不要忘记
  • default 标签:若switch语句中,没有一个case可以匹配上,那么在后边添加一个default: 程序将会自动运行default指令。
  • 尽量不要在switch的分支语句中添加变量定义和赋值初始化,容易出现作用域非法问题。
//switch语句

unsigned aCnt= 0, eCnt=0, iCnt=0, oCnt=0, uCnt=0;
char ch;
while(cin>>ch){
    switch(ch){
        case 'a':{
            ++aCnt;
            break;
            }
        case 'e':{
            ++eCnt;
            break;
            }

        case 'i':{
            ++iCnt;
            break;
            }

        case 'o':{
            ++oCnt;
            break;
            }

        case 'u':{
            ++uCnt;
            break;
            }
}
      switch (ch){  //只需满足其中任意一个即可
          case 'a':case 'e':case 'o':case 'u':
            ++vowelCnt;
            break;
          default:
            cout<<"No match" ;
            break;
}
}

                             

 5.4  迭代语句:

 5.4.1 迭代语句 while:(进入循环体时,先进行判断,若为假,则不进入循环体)

                              

 

 5.4.2 传统for语句: 进入循环体前,先进行一次判断,true则进入,否则循环终止  :

 

  •  从传统for循环执行过程:
       
  • for语句头中可以进行多重定义:虽然可以多重定义对象,但是中间的判断语句只能对应一个对象
  •           

 5.4.3 范围for语句: 一种简单的可以遍历容器或其他序列的所有元素 (注意!!要求遍历的是容器才可)

 5.4.4 do while语句(与while很像,但是区别是:先执行一次循环,执行结束后再进行判断)

 注意!!while();语句后边需要添加;才行

                      

 5.5  重要(跳转语句):break,continue,goto,return

 5.5.1 break语句:

                        

 5.5.2 break语句:(负责终止离他最近的while,do while,for, switch语句)

 

5.5.2 continue语句:(终止最近的循环中的当前迭代,并立即开始下一次迭代,只能出现在for while do-while循环内)

                        

5.5.3 goto语句:(立即无条件跳转到同一函数的另一条语句,尽可能不要使用,需要跳转到带标签语句)

 

5.6. try语句块和异常处理(重要!!)(throw,try,catch)

                    

5.6.1 (1)throw表达式:程序的一场检测部分使用throw表达式引发一个异常,throw表达式包含 throw+表达式;

  • 以下例子抛出的一场是runtime_error的对象,runtime_error是标准库的异常类型的一种,定义在stdexcept头文件中
例如:

Sales_item item1,item2;
cin>> item1>>item2;

if(item.isbn()==item2.isbn()){
    cout << item1+item2<<endl;
    return 0;
}else{
    cerr<<"Data must refer to same ISBN";
    return -1;
}

//使用throw可以改写为:

if(item1.isbn()!=item2.isbn()){
    throw runtime_error ("Data must refer to same ISBN");
}
    cout << item1+item2<<endl;

5.6.2 (2)try表达式:将尝试语句放在try内,catch语句来捕获异常情况。

                              

例如:

Sales_item item1,item2;

//使用throw可以改写为:
while(cin>> item1>>item2){
try{
    if(item1.isbn()!=item2.isbn()){
    throw runtime_error ("Data must refer to same ISBN");
     }
catch(runtime_error){
    cout<<err.what();
        <<"Try anain? y or n?" <<endl;
        char c;
        cin>>c;
    
    if(!cin||c=='n'){
        break;
          }
      }
} 

5.6.3 标准异常

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值