ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《C++ Primer》【Chapter 5】

2022-07-27 17:04:45  阅读:211  来源: 互联网

标签:Chapter 语句 goto C++ else try case Primer 异常


chapter5 语句

1 简单语句

表达式语句:表达式+分号

ival + 4;

2 语句作用域

定义在控制结构当中的变量只在相应语句的内部可见,一旦语句结束,变量也就超出其作用范围了

3 条件语句

3.1 if

为避免出错,一般要在if或else之后写上花括号。

  • 悬垂else(dangling else)

    else与离它最近的尚未匹配的if匹配,从而消除程序的二义性。

if (grade%10 >= 3)
		if(grade%10 > 7)
    		statement
else	//if(grade%10 > 7)匹配
  	statement2

3.2 switch

如果某个 case 标签匹配成功,将从该标签开始往后顺序执行所有 case 分支,除非程序显式地中断了这一过程 , 否则直到 switch 的结尾处才会停下来。要想避免执行后续 case 分支的代码 ,我们必须显式地告诉编译器终止执行过程。大多数情况下,在下一个 case 标签之前应该有一条break语句。

更通俗的理解就是,某个case条件满足后,从满足条件的case一直往后执行,直到结束或碰见break

如果程序的流程绕开了某个case,而后面运行的case的某个变量是在前面定义的,则会报错,所以最好是在哪个case块使用,就在哪个case块定义并初始化。

switch(flag) {
  	case true:
    		int a = 3;
		case false:
    		cout << a << endl;	//flag=false时,a并没有定义和初始化,这样肯定不对。
    //最好写成
	  case false:
    		int a = 3;
    		cout << a << endl;	//	最好就是要在哪里用就在哪里定义和初始化。
}

4 迭代语句

4.1 范围for语句

C++11的新标准

for(declaration : expression)	//	expressio 必须是一个序列
  	statement;

需要修改序列中的元素时,需要加引用

vector<int> A = {0,1,2,3,4,5,6,7};
for(auto &it:A) {
  	it *= 2;
}

4.1 do while语句

格式:

do
  statement
while(condition);	//末尾的分号不能忘记

5 跳转语句

break、continue、goto和return,goto用的少点,重点关注一下

goto语句

goto语句的作用是从goto语句无条件跳转到同一函数内的另一条语句

begin:
    int sz = A.size();
    if(sz == 6) {
        cout << sz << endl;
        goto begin;	//goto语句执行后,会销毁之前定义的sz
    }

try语句块和异常处理

在C++中异常处理包括:

  • throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发(raise)了异常。
  • try语句块,异常处理部分使用try语句块处理异常。 try语句块以关键字try开始,并以一个或多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch子句处理。因为 catch子句"处理"异常,所以它们也被称作异常处理代码 (exception handler)。
  • 一套异常类(exception class),用于在throw表达式和相关的catch子句之间传递异常的具体信息 。

异常中断了程序的正常流程。异常发生时,调用者请求的一部分计算可能已经完成了,另一部分则尚未完成。通常情况下, 略过部分程序意味着某些对象处理到一半就戛然而止,从而导致对象处于无效或未完成的状态,或者资源没有正常释放,等等。那些在异常发生期间正确执行了"清理"工作的程序被称作异常安全 ( exception safe )的代码 。然而经验表明,编写异常安全的代码非常困难。

异常类型只定义了一个名为what的成员函数,该函数没有任何参数,返回值是一个指向C风格字符串的const char*。该字符串的目的是提供关于异常的一些文本信息。

标签:Chapter,语句,goto,C++,else,try,case,Primer,异常
来源: https://www.cnblogs.com/dybala21/p/16525451.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有