C ++ Primer | 第五章 语句

使用控制流语句 (flow of control) 以支持复杂的执行路径。

5.1 简单语句

最简单的语句是空语句(null statement) 它只有一个分号;
注意不要多写分号或者少写分号,while或者if后面没有分号
复合语句 compound statement 是指用花括号括起来的语句和声明的序列,复合语句也被称作block块。在一些语句中,语法上需要一条语句,但是逻辑上需要多条语句,则应该使用复合语句,如while或者for。

5.2 语句作用域

while (int i= get_num())
    cout<<i<<endl;
i=0;//错误,在循环外部无法访问

5.3 条件语句

5.3.1 if

if (condition)
    statement
//-----------------------
if (condition)
    satement
else
    statement2

5.3.2 switch

unsigned a=0,b=0;
char ch
while(cin>>ch){
switch(ch){
case 'a'://注意这里必须为整型常量
    ++a;// 如果要为分支定义并初始化一个变量,我们应该把变量定义在块{}内,从而确保,后面的标签都在作用域之外
    break;// 一定要有break,要不然会继续运行
case 'b':
    ++b;
    break;//break的作用是转移控制权,如果都没有匹配上就会运行switch之后的的语句
defaultbreak;//
    }
}

5.4 迭代语句

5.4.1 while 语句

当不确定到底要迭代多少次的时候,或者想在循环结束后访问循环控制变量。

5.4.2 传统的for语句

//注意在for语句中定义的对象只有在for循环体内可以见。在for循环结束后init的对象就不能使用了
for (init-statemen;condition;expression)//init-statement 负责初始化一个值,一般为声明语句、表达式语句、或者空语句;也可以同时定义多个语句;最后的expression也可以为空语句
    statement

5.4.3 范围for语句

这是c++11中新引入的一种更加简单的for语句

for(declaration:expression)//expression必须是使用花括号括起来的初始值列表或者数组、vector、string等,他们有能返回迭代器的beginend成员,范围变量必须是引用类型(&)才能对其中的元素进行写操作
    statement

5.4.4 do while 语句

do 
    statement
whilecondition);//注意,作为循环的条件不能定义在do的内部

5.5 跳转语句

break; continue; goto;return

5.5.3 goto语句

注意:不要在程序中使用goto语句,既难理解又难已修改

goto label;//label是用于表示一条语句的标示符,labeled statement是一种特殊的语句,在她之前有一个标识符及一个冒号:
begin:
    int sz=get_size();
    if (sz<=0){
        goto begin;
        }
//标签提示符独立于变量的其他标识符的名字,goto语句和控制全转向的那条带标签的语句必须位于同一个函数之内
//----
     goto end;
     int ix=10; // 错误:goto语句绕过了一个带有初始化的变量定义
end:
  ix=42;//错误,此处的需要使用ix,但是goto语句绕过了他的声明

5.6 try 语句块和异常处理

异常是指超出函数正常功能的范围,当程序检测到它无法处理的问题时,需要用到异常处理,一旦发出异常信号,检测出问题的部分也就完成了任务,无需知道如果解决。
异常处理包括:
- throw 表达式;
- try 语句块:使用catch clause 来处理异常
- exception class ;异常类用以在throw和catch之间传递异常的具体信息

5.6.1 throw 表达式

//检测两条数据是否相同
if (item1.isbn()!=item2.isbn())
    throw runtime_error("Data must refer to same ISBN");// runtime_error 是标准异常库中的一种,stdexcept中定义

5.6.2 try 语句

try{
    program-statement
    }catch (exception-declaration){
        handler-statements
    }catch(exception-declaration){
        handler-statements
    }

5.6.3 异常标准

  • exception 头文件: 只定义了最通用的异常类exception,只报告异常的发生,不含具体信息
  • stdexcept 包含几种异常类
  • new头文件定义了bad_alloc异常类
  • type_info 定义了bad_cast异常类
    注意exception、bad_alloc 、bad_cast只能使用默认初始化,但是其他类不可以使用默认初始化
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值