上一次总结了一下c++中表达式的相关内容,这篇博文主要总结语句的基础内容

简单语句

c++ 中语句主要是以分号作为结束符的,最简单的语句是一个空语句,空语句主要用于,语法上需要某个地方,但是逻辑上不需要;最常见的就是循环里面

复合语句是用大括号括起来的语句块叫做复合语句,复合语句也叫做块。一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块里面的子块中访问。通常名字在有限的区域内可见,该区域从名字定义开始,到名字所在块的结尾为止。语法上需要一条语句,但是逻辑上需要多条语句的,应该使用语句块,例如if或者while等循环里面。

块不以分号结束。{};, 算两条语句

空块是指内部没有任何语句的一对花括号

语句作用域

语句中变量的作用域只在当前语句块中有效,如果其他代码也想访问控制变量,则变量必须定义在语句块的外部。

条件语句

条件语句需要注意:

  1. if语句每个分支尽量加上大括号,即好读,也能避免很多问题
  2. switch 语句中case后面必须跟上整型常量表达式
  3. 一般不要省略case分支最后的break语句,如果是特殊逻辑需要这么做的,使用注释进行说明
  4. 即使不准备在default分支中做任何事,最好也写上default分支。其目的在于告诉程序的读者,我们已经考虑到了默认的情况,只是目前什么也没有做
  5. 要在case分支中定义变量应该定义在大括号中,并且只在当前分支中使用它

迭代语句

迭代语句又叫做循环语句,一般有while、do while、for三种形式

这些语句一般的语言中都有,这里就不多做介绍,主要介绍c++ 11中新增的一种范围for的形式

范围for可以遍历容器或者其他序列的所有元素,它的简单形式是

for(declaration: expression)
statement

declaration 定义一个变量,序列中的每一个元素要都能转化为该变量的类型,然后执行拷贝操作,将每次迭代的值拷贝到该变量中。变量只是序列中元素的拷贝,无法修改元素的值,如果想要修改元素的值,需要将变量定义为引用类型。

statement 是一个语句或者语句块,所有元素都处理完后,循环结束

跳转语句

跳转语句主要有break、continue以及goto语句。

break:用于跳出离它最近的while、do while、for或者switch语句,并从这些语句之后的第一条语句开始执行。

continue:终止最近的循环语句中当前迭代并立即进入下一次迭代,它只能出现在循环语句中。

goto:跳转到对应标签处,标签可以定义在函数任意位置。注意只能作用于函数内部,不能由一个函数跳转到另一个函数。尽量少用goto,因为它可读性差,而且不好控制。

异常处理语句

c++中的异常处理包括这样几个部分:

  1. throw表达式:用于抛出一个异常
  2. try: 异常处理部分使用try语句块处理异常,try语句块以关键字try开始,并以一个或者多个catch子句结束。try语句块中代码抛出的异常通常会被某个catch子句处理。因为catch子句处理异常,所以它们也被称之为异常处理代码
  3. 异常类:用于在throw表达式和相关的catch子句之间传递异常的具体信息

throw 后面跟一个表达式,表达式返回值的类型就是抛出异常的类型。

跟在try 语句块之后的是一个或者多个catch子句,当try中的异常与某一个catch中捕获的异常类型匹配,则执行该catch块中的内容。

注意try块与catch子句是两个语句块,在try中定义的变量无法在catch块中使用。

标准异常库

标准异常库被分别定义在4个头文件中:

  1. exception 头文件定义了最为通用的异常类exception。它只报告异常的发生,不提供任何额外信息
  2. stdexcept 头文件中定义几种常见的异常类
  3. new 头文件中定义了bad_alloc 异常
  4. type_info 头文件定义了bad_cast 异常类型

在stdexcept 头文件中定义的异常类主要有:

  1. exception: 最常见的问题
  2. runtime_error: 只有在运行时才能检测出来的问题
  3. range_error: 运行时错误,生成的结果超出了有意义的值域范围
  4. overflow_error: 运行时错误,计算上溢
  5. underflow_error: 运行时错误,计算下溢
  6. logic_error: 程序逻辑错误
  7. domain_error: 逻辑错误,参数对应的结果值不存在
  8. invalid_argument: 逻辑错误,无效的参数
  9. length_error: 逻辑错误,试图创建一个超出该类型最大长度的对象
  10. out_of_range: 逻辑就错误,使用一个超出有效范围的值

标准库异常类只定义了几种运算,包括创建或者拷贝异常类型的对象,以及为异常类型的对象赋值

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


c++基础之语句的更多相关文章

  1. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  2. Mysql(Mariadb) 基础操作语句 (持续更新)

    基础SQL语句,记录以备查阅.(在HeiDiSql中执行) # 创建数据库 Create Database If Not Exists VerifyIdear Character Set UTF8; ...

  3. HQL基础查询语句

    HQL基础查询语句 1.使用hql语句检索出Student表中的所有列 //核心代码 @Test public void oneTest() { Query query=session.createQ ...

  4. mysql使用基础 sql语句(一)

    csdn博文地址:mysql使用基础 sql语句(一)  点击进入 命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需 ...

  5. VBA基础——循环语句

    VBA基础之循环语句 Sub s1() Dim rg As Range For Each rg In Range("a1:b7,d5:e9") If rg = "&quo ...

  6. 【MySQL】MySQL基础操作语句

    mysql基础操作语句,包括数据库的增.删.切换,以及表的增.删.改.查.复制. 创建数据库 mysql> create database tem; 使用数据库 mysql> use te ...

  7. Java实例 Part1:Java基础输出语句

    ** Part1:Java基础输出语句 ** 第一部分最基础,就是标准的输出语句. ps:(目前还没熟悉这个编辑器,先尝试一下) Example01 : 输出"hello world&quo ...

  8. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

    花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...

  9. MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句

    数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...

  10. MySQL数据库基础操作语句

    SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,分为3种类型: 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DM ...

随机推荐

  1. 大数据 - DWD&DIM 业务数据

    业务数据的变化,我们可以通过 FlinkCDC 采集到,但是 FlinkCDC 是把全部数据统一写入一个 Topic 中, 这些数据包括事实数据,也包含维度数据,这样显然不利于日后的数据处理,所以这个 ...

  2. VS IIS Express 启动项目后,绑IP让别人可以访问你的网站

    如何VS IIS Express 启动项目后,绑本机IP,让别人可以访问你的网站,方便Debug 一.修改iis配置 1.在web服务器执行后,会运行IIS Express,右击它选择显示所有应用程序 ...

  3. 不懂前端,我依然开发了一个机器学习APP

    人人都知道学习很重要,学习究竟是为了什么呢?根本目的只有一个,学以致用! 机器学习,大家都学了很多算法,搞了很多模型,但是极少拿来解决实际问题. 毕竟开发一个机器学习应用需要的技术栈不是每个人都能掌握 ...

  4. CO01/CO02生产订单组件库存地点替换

    一.生产订单组件库存地点替换 当生产订单维护组件点击保存时,根据对应的工厂和工作中心,到配置表中查询对应的库存地点,并将自动带出的库存地点替换 二.隐式增强 在函数CO_VB_ORDER_POST中添 ...

  5. AtCoder Beginner Contest 203 (A~D,玄学二分场)

    补题链接:Here A - Chinchirorin 给出 \(a,b,c\) 三个正整数,现请打印各种情况的答案: \(a=b=c\) ,输出一个即可 \(a = b\ and\ a != c\) ...

  6. 关于 Windows10升级版本后,内存占用率居高不下的解决办法

    一个月前,打开系统更新,win 10 推送了 最新版本. 然后手贱点了更新. 的确一开始没觉得的有什么明显变化,但最近总觉得机子卡的卡的严重,查看了下内存,占用率居高不下. 经常才打开一两个软件内存就 ...

  7. 【驱动】I2C驱动分析(二)-驱动框架

    I2C驱动框架简介 I2C 驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,系统的整体框架如下所示. 最上层是应用层,在应用层用户可以直接用open read write ...

  8. gitlab安装,移库,升级

    概述 最近因为机房原因,需要把我们的本地代码库做移库操作. 针对gitlab的安装升级操作重新进行了梳理,记录一下. 环境 CENTOS6 CENTOS7 gitlab-ce-8.14.2 GITLA ...

  9. ORACLE Enterprise Manager Database Express(OEM-express)(遇到localhost拒绝访问情况)配置端口和启动方法

    1.问题 之前一直进不去ORACLE Enterprise Manager Database Express,显示的是localhost拒绝了访问,经过查阅知道是没有配置相应端口. 2.解决方法 转载 ...

  10. 【VSCode】秒下vscode

    有时从vscode官网下载速度奇慢甚至失败,介绍一种方法可以秒下 进入官网选择要下载的版本 像我的电脑,下载网址根本打不开 修改下载网址,替换下载地址中红框字符串:vscode.cdn.azure.c ...