语句

空语句

用一个***;作为一个语句***,用来占位

多出的空语句并不会有语法上的错误,但可能会产生逻辑上的错误。如在循环后加一个***;***。

花括号内不存在语句时被称为空块,与空语句作用一致。

作用域

条件语句也有作用域

条件

当不使用花括号时,else会和最近的if相匹配,而非根据缩进

if的条件括号中定义的变量只在if和else中时有效的。

switch

用法:

1
2
3
4
5
6
7
8
switch(变量){
case 1:
.....
case 2:
.....
default:
.....
}

case后的值是变量的可能值,但必须为整型常量小整数类型(包括字符)也是整型

case都不符合时,会执行default

当一个case内部运行结束时,并不会结束switch,而是接着运行下面一个case,因此需要在每一个case的最后加一个break

此外,由于会跳过语句,因此虽然整体属于一个switch的作用域内,但是不允许在case声明初始化语句

但是,可以通过在case内部加入一组大括号来制造一个作用域

因此,作用域是由大括号来决定的。

for

定义语句虽然可以多重定义,但由于是一句语句,因此声明变量必须是同种类型的。

传统for三要素都是可以省略的。

for-range语句对象必须是一个能够通过***.begin().end()返回尾后指针类型***。其等价于:

因为***.end()是一开始就获取好的,因此不能在循环中向其中添加元素***,使其***.end()***改变。

break

终止while, do while, for, switch

continue

结束while, do while, for的当前一次迭代

goto

在程序中以lable:声明标签位置,接着可通过goto label来跳转。

不能向后跳过初始化语句,但可以向前跳过,在此过程中,会销毁这一初始化变量

异常处理

步骤:

  1. 在可能出现错误的地方使用try包裹。
  2. 在出现错误的地方用throw抛出异常
  3. try后用catch捕捉错误类型并处理解决。

格式:

1
2
3
4
5
6
7
try{
throw 错误类型(错误信息);
}catch(错误类型 抛出来的存储错误信息的变量){
;
}catch(...){
;
}

错误信息是string类型或者C风格字符串

try内部声明局部变量并不能在catch作用域中被使用。

可以通过***.what()来获取初始化错误时使用的字符串字面值,返回值是const char ****。

catch只会通过错误类型进行匹配。

当并没有匹配到对应的catch时,会返回调用当前函数函数继续寻找,若到底层仍然没找到,则直接terminate,程序非正常退出

异常类型

  1. exception头文件,异常类型exception,最常见的问题,不提供任何其他信息。
  2. stdexcept头文件,提供多种异常类型。

  1. new头文件,异常类型bad_alloc
  2. type_info头文件,异常类型bad_cast

只有stdexcept提供非默认初始化

鲁棒性,指系统在扰动或不确定的情况下仍能保持它们的特征行为。


语句
https://lhish.github.io/project/hide/语句/
作者
lhy
发布于
2024年6月30日
许可协议