zoukankan      html  css  js  c++  java
  • c++基础之语句

    上一次总结了一下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风格的字符串,该字符串的目的是提供关于异常的一些文本信息。


  • 相关阅读:
    Pytorch 入门之Siamese网络
    Pytorch 之 backward
    非极大值抑制(NMS)
    Apriori 算法python实现
    canny 算子python实现
    转载
    ubuntu 安装lightgbm
    OneHotEncoder独热编码和 LabelEncoder标签编码
    Adroid—— DVM
    PHP——做服务
  • 原文地址:https://www.cnblogs.com/lanuage/p/14466145.html
Copyright © 2011-2022 走看看