C/C++——[04] 语句
在 C/C++语言中,语句以“ ;”结束。某些情况下,一组语句在一起共同完成某一特定的功能,可以将它们用大括号括起来。我们称之为语句组。语句组可以出现在任何单个语句出现的地方。
1. 分支语句
一般情况下,语句的出现顺序就是其执行顺序。但是在某些情况下,需要根据不同的运行情况而执行不同的语句组。这时可以选用分支语句。C/C++有两种分支语句: if 和 switch。
1.1 if语句
if语句有两种形式:
if(表达式){
语句/语句组
}if(表达式){
语句/语句组1
}else{
语句/语句组2
}
if 语句可以嵌套使用。在没有大括号来标识的情况下,else 语句被解释成与它最近的if 语句共同构成一句。
1.2 switch语句
switch 和 case 语句用来控制比较复杂的条件分支操作。 switch 语句的语法如下:
switch(表达式){
case 常量表达式1:语句/语句组1;[break;]
case 常量表达式2:语句/语句组2;[break;]
...
case 常量表达式n:语句/语句组n;[break;]
default:语句/语句组n+
}
switch 语句可以包含任意数目的 case 条件, 但是不能有两个 case 后面的常量表达式完全相同。进入 switch 语句后,首先表达式的值被计算、并与 case 后面的常量表达式逐一匹配,当与某一条 case 分支的常量表达式匹配成功时,则开始执行它后面的语句/语句组 ,然后顺序执行之后的所有语句,直到遇到一个break 语句,若无break语句则执行完default之后的语句,整个 switch 语句结束。如果表达式 与所有的常量表达式 都不相同,则从 default 后面的语句开始执行到 switch 语句结束。
各 case 分支后的“常量表达式”必须是整数类型或字符型的。
如果各个 case 分支后面的语句/语句组 彼此独立,即在执行完某个 case 后面的语句/语句组后,不需要顺序执行下面的语句,可以用 break 语句将这些分支完全隔开。 在 switch语句中,如果遇到 break 语句,则整个 switch 语句结束。
default 分支处理除了明确列出的所有常量表达式以外的情况。 switch 语句中只能有一个 default 分支,它不必只出现在最后,事实上它可以出现在任何 case 出现的地方。switch 后面的表达式 与 case 后面的常量表达式 必须类型相同。 象 if 语句一样, case语句也可以嵌套使用。
2. 循环语句
支持程序重复执行某一段程序的循环控制语句。相关的语句有: for; while; do while; break; continue;
2.1 for语句
for 可以控制一个语句或语句组重复执行限定的次数。 for 的语句体可以执行零或多次,直到给定的条件不被满足。可以在 for 语句开始时设定初始条件,并在语句的每次循环中改变一些变量的值。 for 语句的语法如下:
for(初识条件表达式;循环控制表达式;循环操作表达式){
语句/语句组
}
执行一个 for 语句包括如下操作:
- 初始条件表达式 被分析执行。这个条件可以为空。
- 循环控制表达式 被分析执行。这一项也可以为空。 循环控制表达式一定
- 是一个数值表达式。在每次循环开始时,它的值都会被计算。计算结果有三种可能:
- 如果循环控制表达式 为真(非零), 语句/语句组被执行;然后循环操作表达式被执行。 循环操作表达式 在每次循环结束时都会被执行。下面就是下一次循环开始, 循环操作表达式 被执行。
- 如果循环控制表达式被省略,它的值定义为真。一个 for 循环语句如果没有循环控制表达式 ,它只有遇到 break 或 return 语句时才会结束。
- 如果循环控制表达式 为假(零), for 循环结束,程序顺序执行它后面的语句。
break, goto, 或 return 语句都可以结束 for 语句。 continue 语句可以把控制直接转移至 for 循环的循环控制表达式
2.2 while语句
while 语句重复执行一个语句或语句组,直到某个特定的条件表达式的值为假。它的语法表示如下:
while(表达式){
语句/语句组
}
式中的表达式 必须是数值表达式。 while 语句执行过程如下:
- 表达式被计算。
- 如果表达式的值为假, while下面的语句被忽略, 程序直接转到 while 后面的语句执行。
- 如果表达式的值为真(非零), 语句/语句组 被执行。之后程序控制转向 1。
2.3 do-while语句
do-while 语句重复执行一个语句或语句组,直到某个特定的条件表达式的值为假。下面是它的语法表示:
do{
语句/语句组
}while(表达式); //注意这里必须以分号(;)结尾
do-while 语句中,表达式是在语句/语句组 被执行之后计算的。所以 do 后面的语句/语句组 至少被执行一次。 其中表达式 必须是一个数值表达式。 do-while 语句的执行过程如下:
- do 后面的语句/语句组 被执行;
- 表达式 被计算。如果其值为假,则 do-while 语句结束,程序继续执行它后面的语句。如果表达式 的值为真(非零),跳转回 1 重复执行 do-while 语句。
do-while 语句同样可以通过 break, goto, 或 return 语句结束。
3. 循环跳转语句
3.1 break语句
break 语句用来结束离它最近的 switch、for、do-while或while 语句。它的语法表示如下:
break;
3.2 continue语句
在 for、while或do-while 语句中,continue 语句使得其后的语句被忽略,直接回到循环
的顶部,开始下一轮的循环。 continue 语句的语法表示如下:
continue;
for、while或do-while语句的下一轮循环用如下方法确定:
- 对于 do 或 while 语句, 下一轮循环从计算条件表达式的值开始。
- 对于 for 语句,下一轮循环从计算第一个循环控制条件表达式的值开始。
C/C++——[04] 语句的更多相关文章
- JAVA-1-学习历程1:基础知识1
前言:此文属于个人学习中总结记录的较重要的知识点,分享一下.望对刚開始学习的人有点用. 视频04 语句.函数.数组 1.函数的重载 2.数组内存空间的划分 栈.堆 视频05 数组 1. ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- whdxlib
1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...
- 【Java基础】【04循环语句&方法】
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- 04 循环结构概述和for语句的格式及其使用
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do…while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环 ...
- Matlab2015基本语句语法04
1. 输入.输出.格式化输出 1) 读入数据:input >>number: num=input('Give me your number: '); >>string: str ...
- 【C】 04 - 表达式和语句
程序的生命力体现在它千变万化的行为,而再复杂的系统都是由最基本的语句组成的.C语句形式简单自由,但功能强大.从规范的角度学习C语法,一切显得简单而透彻,无需困扰于各种奇怪的语法. 1. 表达式(exp ...
- javascript笔记04:let语句 和 yield语句 和 with语句
1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...
随机推荐
- UVA10859 Placing Lampposts
我是题面 这道题使我知道了一种很神奇的方法,一定要认真看哦 如果没有被两盏灯同时照亮的边数应尽量大这个限制的话,这就是一道很经典的树形DP题--没有上司的舞会 很可惜,这个限制就在那里,它使得我辛苦写 ...
- 【BZOJ1396】识别子串&【BZOJ2865】字符串识别(后缀自动机)
[BZOJ1396]识别子串&[BZOJ2865]字符串识别(后缀自动机) 题面 自从有了DBZOJ 终于有地方交权限题了 题解 很明显,只出现了一次的串 在\(SAM\)的\(right/e ...
- 2018九省联考(SHOI2018)
听说在退役前还能有去外省的机会QAQ D1 9点T1,T2过拍,感觉自己稳得一批,然后边看T3边幻想AK 事实证明我是多么菜多么无知多么傻逼 想T3时太浮躁,最后也没想出来 T2根本没有想过去怀疑自己 ...
- 关于在VWmare下安装Redhat
本文是小白博主自行摸索安装的过程,下文主要是给出几篇很有用的文章出处和自己遇到的问题. 一.关于安装包 对于安装包,个人建议是去官网下载(个人安装的是rhel 7.4),可能初接触Linux时,是不是 ...
- 流媒体协议之JRTPLIB的使用20170919
主要介绍JRTPLIB 2.x系列和3.x系列两种版本,它们的区别是2.x系列代码量少使用简单,但是只支持RFC 1889不支持RFC 3550,3.x支持RFC 3550,但代码量稍多,以及使用也稍 ...
- STL源码分析-algorithm
http://note.youdao.com/noteshare?id=8b3473983e4c8d8eee32544708633f79
- python的StringIO模块
StringIO经常被用来作字符串的缓存,因为StringIO的一些接口和文件操作是一致的,也就是说同样的代码,可以同时当成文件操作或者StringIO操作. 一.StringIO中的常用方法 1.r ...
- 面试的角度诠释Java工程师
原文出处: locality 一.基础篇 1.面向对象的三大特性 继承.封装.多态 什么是继承?①继承是面向对象程序设计能够提高软件开发效率的重要原因之一.②继承是具有传递性的,就像现实中孙子不仅长得 ...
- OpenCV---色彩空间(一)
颜色空间:用三种或者更多特征来指定颜色的方法,被称为颜色空间或者颜色模型 1.RGB(OpenCV中为BGR): 一幅图像由三个独立的图像平面或者通道构成:红.蓝.绿(以及可选项:透明度alpha通道 ...
- NOIP模拟赛16
NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2 期望得分:100+100+ =200+ 实际得分:100+40+70=210 T1天天寄快递 直接模拟,代码丢了...... T2天天和不 ...