C++primer(第五版)第五章(语句)

news2025/1/31 8:04:18

5.1简单语句

一个语句在末尾加上分号;就变成了表达式语句.表达式语句的作用是执行表达式并丢弃掉求值结果(也可以用赋值运算符=将求值结果存起来),不存起来的话,大多数表达式语句是没有什么实际用处的表达式语句,例如:

int a=10;
a+5;    //这就是没什么用的表达式语句
;       //空语句,在这里同样没有

多余的空语句不仅没用,甚至可能对程序有不好的影响.

有些地方用得上空语句,但最好是加上注释,增强代码的可阅读性.

int i=0;
for(;i<10;i++){    //这里留空语句,是因为for语句头的第一个空是可以不写的
    ;              //此处空语句表示这个循环并不执行什么具体操作.(单片机的延时函数会用到)
}

复合语句是指用花括号括起来的语句(有可能是空语句,例如上面的例子),复合语句也称为块.块不以分号;结尾,所以在for,while之类的代码块结尾不加分号(虽然有些时候加上也没什么影响,但是同上面所说,最好不要有多余的空语句)

5.2语句作用域

定义在块中的变量仅在块中有效.块内定义的变量出了块就失效了.

5.3条件语句

本小节较详细地介绍了if语句,switch语句,由于和C语言一致,我就不多介绍而是单独列出比较有价值的点.

5.3.1 if语句

注意使用花括号(块),if嵌套记得通过代码的缩进增加代码的可阅读性.

5.3.2switch语句

在每个分支都要记得break,在最后一条case语句最好也加上(显得专业)

5.4迭代语句

同上,不多介绍.

5.4.1 while语句

定义在while条件部分或者while循环体内的变量每次迭代都经历从创建到销毁的过程.

5.4.2传统的for语句

for语句头定义的对象只在循环体内可见(有效),for循环结束后对象失效.

5.4.3范围for语句

使用时类似:

vector<int>v(10,1);
for(int i:v){    //其中i可以自己随便起名,数据为v中的元素
    cout<<i<<endl;
}

5.4.4 do while语句

do while 语句应该在括号包围起来的条件后用分号;表示结束.

do{

} while();

5.5跳转语句

5.5.1 break语句

break终止距离最近的条件语句或迭代语句,并且从这些语句之后的第一条语句开始继续执行.

5.5.2 continue语句

 continue终止距离最近的迭代语句,并且开始迭代语句下一次迭代.

5.5.3 goto语句

不要使用!不要使用!不要使用!

5.6 try语句块和异常处理

C++中异常处理包括:

throw表达式,异常检测部分使用throw表达式来表示它遇到了无法处理的问题.

try语句块:异常处理部分使用try语句块处理异常,子语句catch"处理"(实际上是我们处理)异常,它们都被成为异常处理代码.

5.6.1 throw表达式

throw 表达式;    //表达式的类型通常为异常类型,整条语句表示为抛出一个异常.

5.6.2 try语句块

try{
    program-statements            //程序语句
}catch (exception-declaration){   //异常声明
    handler-statements            //处理程序语句
}catch (exception-declaration){
    handler-statements
}catch (exception-declaration){
    handler-statements
}

try语句中声明的变量在块的外部无法访问,包括子语句catch.

5.6.3标准异常

C++标准库定义了一组类,用于报告标准库函数遇到的问题(你也可以自己定义一些异常类型).它们分别被定义在四个头文件中:

exception : 定义了最通用的异常类 exception.

stdexcept : 详细在下面的表中,较为常用.

new : 定义了bad_alloc异常类型.

type_info : 定义了bad_cast异常类型.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Linux操作系统编程》第四章 屏幕编程器vi : 了解屏幕编辑器vi的概述和基本操作命令

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

基于单片机自动控制的电动模型汽车

摘 要 本文研究了一种基于单片机自动控制的电动模型汽车。主要论述了自动循迹、避障、测距跟随等自动驾驶相关技术在模型车上的应用。 模型汽车以STM32为主控芯片&#xff0c;采用了多种传感器、驱动电机、控制舵机等检测与控制模块&#xff0c;实现了路径循迹行驶和检测避障的…

【python】numpy的array数组与pandas的DataFrame表格互相转换(图文代码超详细)

目录 0.环境 1.array数组和DataFrame表格的简单介绍 2.转换方式详解&#xff08;代码&#xff09; 0&#xff09;前提&#xff1a;【需注意】 1&#xff09;array转化为DataFrame 2&#xff09;DataFrame转化为array 3&#xff09;完整代码 0.环境 windows jupyter note…

英语统考错题集_作文题---网络教育统考工作笔记003

scholar 学者 下面是关于统考中的作文的如何书写,要打个照面,不能到时候蒙了 sincere 真诚的 cover 覆盖 excited 激动的 兴奋的 sincerely 真诚的 absent 缺勤的 citizen 公民 居民 每种题型都接触一下,然后后面有时间继续扩充中.. 152下上

ansible 变量与事实变量

Ansible变量与事实变量&#xff1a; 自定义变量&#xff1a; 变量可以在定义任务前进行定义&#xff0c;也可以从其他文件中调用。 下面我写了一个在任务前定义的变量&#xff0c;并用循环将其打印。 内部变量&#xff1a; 剧本如下&#xff1a; --- - hosts: localhostva…

基于51单片机开发的步进电机远程控制系统

摘 要 电机是日常生活中必不可少的一部分&#xff0c;同时也是一种常用的机电元件。步进电机是一种特殊的电机&#xff0c;相较于其他类型的电机&#xff0c;步进电机的优点更加突出、应用优势更加明显&#xff0c;广泛应用于各个领域。 本设计是基于单片机开发的步进电机远程…

力扣算法刷题Day47|休息日总结:动态规划之背包问题

背包问题 〉题型分类 解题套路 〉动规五部曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 解题技巧 〉递推公式 问背包装满后的最大价值&#xff1a;dp[j] max(dp[j], dp[j - weight[i]] value[i]) …

JMeter之简单控制线程组(Thread Group)组件的执行顺序

jmeter的线程类型一共有3种分别是setUp线程组、tearDown线程组和线程组 他们的执行优先级为 setUp线程组 > 线程组(Thread Group) > tearDown线程组 当存在多个线程组(Thread Group)&#xff0c;jmeter默认是同时执行的&#xff0c;也就是说是无序的&#xff0c;此时如果…

蓝桥杯单片机赛点数据包模块文件使用的注意事项

目录 蓝桥杯单片机赛点数据包模块文件使用的注意事项 前言&#xff1a; 正文&#xff1a; DS1302 IIC onewire 2023年赛点资源包数据包下载地址&#xff1a;https://download.csdn.net/download/qq_25218501/87965408?spm1001.2014.3001.5503 蓝桥杯单片机赛点数据包模块…

redis---基础(部署及常用命令)

目录 前言一、关系型数据库与非关系型数据库1. 关系型数据库2. 非关系型数据库3. 关系型数据库和非关系型数据库区别4. 非关系型数据库产生背景小结&#xff1a; 二、Redis简介1. 单进程快速的原因&#xff1a;2.epoll 机制优势&#xff1a; 三、Redis 具有以下几个优点四、red…

全国农信银CTF流量分析(凯撒会分析流量吗)

总的来说这题还是挺简单的。先分析流量过滤http 发现有f?ag提示&#xff0c;然后分析url 解析得到 &#xff1a;[Request URI: http://192.168.0.111/?codeif [ $(head f?ag | cut -c 1) G ] then sleep 1 echo success 发现是时间盲注 然后过滤 http.time > 1 对过滤…

《移动互联网技术》第三章 无线定位技术:掌握位置服务和室内定位的基本概念和工作原理

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

无线路由器解决方案 MR500E工业级4G路由器可实时监控4G信号强度

近年来&#xff0c;随着物联网技术的快速发展&#xff0c;越来越多的制造企业开始加速推进工业互联网的建设和应用。作为工业互联网的重要基础设施之一&#xff0c;工业级4G路由器也不断迭代升级&#xff0c;以满足企业多样化的应用需求。 无线路由器解决方案MR500E工业4G路由…

矩阵通引入AIGC,帮助企业挖掘用户线索

据CNNIC报告数据&#xff0c;截止2022年6月&#xff0c;我国网民规模达10.51亿&#xff0c;其中短视频用户规模为9.62亿&#xff0c;网络直播用户规模达7.16亿&#xff0c;占网民整体的68.1%。 庞大的用户体量为直播带货奠定了基础&#xff0c;给品牌商家提供了新流量阵地&…

winDbg 分析dump

一、linux 部属.netcore生成dump #当然默认是不支持的&#xff0c;需要用 ulimit 开启&#xff0c;这个命令可以用来配置当前系统资源的使用额度 ulimit -a #core file size 就是用来指定生成 dump 文件的大小&#xff0c;默认为 0&#xff0c;即表示不生成&#xff0c;我们临…

使用gitlab 自带 CI/CD 构建部署项目

首先是处理网络问题 这里我用的是桥接模式 桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步 # 使用ip addr 查看网络 ip addr编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改如下内容 B…

数据结构与算法:栈和队列

1 栈 栈是一种后入先出&#xff08;LIFO&#xff09;的线性逻辑存储结构。只允许在栈顶进行进出操作。 1.1 栈基本操作 基本操作包括&#xff1a;入栈&#xff08;push&#xff09;/出栈&#xff08;pop&#xff09;/获取栈顶元素&#xff08;peek&#xff09;。 栈的实现主…

CNN卷积类型总结(标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等)

目录 标准卷积 卷积的运算 conv2d conv1d 其他卷积类型 空洞卷积&#xff08;膨胀卷积&#xff09; 反卷积&#xff08;转置卷积&#xff09; 深度可分离卷积 分组卷积 参考文章 上学时&#xff0c;卷积常在各个课程中出现&#xff0c;现代、信号与系统这些&#xff…

第45步 深度学习图像识别:Nasnet建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;Nasnet NASNet是由Google Brain团队在2017年提出的一种神经网络架构搜索&#xff08;Neural Architecture Search&#xff0c;简称NAS&#xff09;的结果。NAS是一种用于自动化设计深度学习模型的技术。在NA…

oracle字符集

1、查看oracle字符集 如果操作系统或者客户端的字符集设置和数据库设置不一样就会出现乱码 查询NLS_LANG即操作系统环境变量要设为 NLS_LANGUAGE_NLS_TERRITORY**.NLS_CHARACTERSET**&#xff0c;如&#xff1a; export NLS_LANG“AMERICAN_AMERICA.AL32UTF8”