Chapter 5: Statements

  • 为什么不要在switch语句内部定义变量?
    考虑这样一种情况: 如果我们在switch语句的某个case中定义了一个变量并显示初始化, 而在另一个case中要用到这个变量, 那么当程序执行时跳过了定义变量的case时, 程序报错”变量由case标签跳过”(VS2015实测).
    再考虑另一种情况: 如果我们在switch语句的某个case中定义了一个变量但不显式初始化, 而在另一个case中要用到这个变量, 那么当程序执行时跳过了定义变量的case时, 程序报错”使用了未初始化的变量”(VS2015实测).

    事实上, C++规定: 从作用域之外定义变量且初始化的某处跳转到作用域之内使用变量的某处是非法的.


  • 范围for语句的语法
// 范围for
for (declaration : expression)
    statement

expression必须是一个序列, 比如花括号扩起来的初始化列表, 数组, vector, string等类型的对象, 其共同特点是拥有能返回迭代器的begin和end成员.
declaration定义一个变量, 序列中的每个元素都得能转换成该变量的类型.(使用auto类型说明符和引用)
首先将declaration的变量初始化为序列的第一个元素, 然后执行statement, 之后将第二个元素赋给变量, 再执行statement, 直到序列尾.

vector<int> v = {0,1,2,3,4,5};
// 需要改变v中的元素, 使用引用
for(auto &r : v)
{
    r *= 2; // v中每个值翻倍
}

  • break, continue, goto应该怎么用?
    • break
      作用于离他最近的循环语句(for, while, do while)和switch语句. 也就是说break用来结束循环(是终止所有循环, 而不仅仅是本次循环), 或者跳出switch..
    • continue
      只能作用于离他最近的循环语句(for, while, do while). continue用来结束本次循环(仅仅是本次循环).
    • goto
      坚决不用.

  • C++中的异常处理机制
    异常是程序运行过程中程序本身无法处理的反常情况.
    异常处理机制包括异常检测和异常处理两部分.
    异常检测使用throw表达式来表示遇到了异常.
    异常处理使用try-catch语句块处理异常
    呃… 不扯了, 并没有看懂什么异常处理, 以后再说吧.. 且贴一个知乎上关于要不要用异常的问题. 对使用 C++ 异常处理应具有怎样的态度?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值