C语言笔记2--控制流
来源:互联网 发布:藤井莉娜淘宝 编辑:程序博客网 时间:2024/05/18 01:07
总论:
程序语言中的控制流语句用于控制各计算操作执行的次序。
if - else 语句
if - else 用于条件判定。 如:
if(表达式){ 语句序列1;}else{ 语句序列2;}
其中else部分是可选的。
该语句执行时,先计算表达式的值,如果其值为真(即表达式的值为非0),则执行表达式1;
如果其值为假(即表达式的是为0),并且该语句包含else部分,则执行语句2。
注:
因为if - else语句的else部分是可选的,所以在嵌套的 if 语句中省略它的 else 部分将导致歧义。
解决的方法是将每个 else 与最近的前一个没有 else 配对的 if 进行匹配。良好的程序代码的缩进结构可以体现出来。
else - if 语句
下面if 语句结构,是编写多路判定最常用的方法。如:if(表达式){ 语句序列;}else if(表达式){ 语句序列;}else if(表达式){ 语句序列;}else{ 语句序列;}其中的各表达式将被一次求值,一旦某个表达式结果为真(即表达式值为非0),则执行与之相关的语句,并终止整个语句序列的执行。
注:
最后else 是可选的,用于处理 “上述条件均不成立” 的情况或默认情况,该部分也可以用来检查错误,以捕获“不可能”的条件。
switch 语句
switch 语句是一种多路判定的语句,它测试表达式是否与一些常量整数值中的某一个匹配,并执行相应的分支动作。如:switch 语句,先计算表达式的值, 并逐个与其后的常量表达式值相比较(每个分支都由一个或多个整数值常量或常量表达式标记),当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
switch (nSqlID){ case RUBILL_QUERY_BY_TYPE: case RUBILL_QUERY_ALL: 语句序列; break; case RUBILL_INSERT: 语句序列; break; case RUBILL_DELETE: 语句序列; break; default: 语句序列; break;}注:
在switch 语句中,case的作用只是一个标记。因此,某一个分支中的代码执行完后,程序将进入下一分支继续执行,除非在程序中显示的跳转break;
在case后的各常量表达式的值不能相同,否则会出现错误。
在case后,允许有多个语句,可以不用{}括起来。
各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
不要忘记最后那个default分支。即使程序真的不需要default处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default处理。(default子句可以省略不用)
break语句将导致程序的执行立即从switch语句中退出,正常情况下每个分支后都加一个break语句结束,否则将导致多个分支重叠(除非有意使多个分支重叠)。
while循环 与 for 循环
while 循环语句,如:while(表达式){ 语句序列;}首先求表达式的值,如果其值为真(非0),则执行语句序列,并再次求该表达式的值,这一循环过程一直进行下去,直到该表达式的值为假(0)为止,随后继续执行语句后面的部分。
for 循环语句,如:
for(表达式1; 表达式2 ;表达式3){ 语句序列;}它等价于下列whlie语句:
表达式1;while( 表达式2 ){ 语句序列; 表达式3;}
注:
for 循环语句的3个组成部分都是表达式,最常见的情况是,表达式1与表达式3是赋值表达式或函数调用,表达式2是关系表达式。
这3个组成部分中的任何部分都可以省略,但分号必须保留。
如果在for语句中省略表达式1和表达式3,它就退化成了while循环语句。如果省略测试条件,即表达式2,则认为其值永远是真值,需要借助其他手段(如break语句或return语句)才能终止执行。
do - while 语句
do - while 语句的语法形式,如:do{ 语句序列;}while(表达式);</span>首先执行循环体中的语句部分,然后再求表达式的值,如果表达式的值为真(非0),则再次执行语句,依此类推; 当表达式的值变为假(0),则循环终止。
注:do - while 循环则在循环体执行后测试终止条件,这样循环体至少被执行一次。
break 语句与continue 语句
break 语句可用于从for、while与do - while 等循环体中提前退出,就如同从switch 语句中提前退出一样。如:int trim(const s[]){ int n; for( n = strlen(s) - 1; n >= 0; n--) { if(s[n] ==' ') { break; } } s[n + 1] = '\0'; return n;}
continue 语句用于使for、while与do - while语句开始下一次循环的执行,continue 语句只用于 循环语句,不用于switch语句。
注: 在while与do - while语句中,continue 语句的执行意味着立即执行测试部分;在for 循环中,则意味着使控制转移到递增循环变量部分。
goto 语句
C语言提供了可随意滥用的goto语句以及标记跳转位置的标号。
注:
标号的命名同变量命名的形式相同,标号的后面要紧跟一个冒号。
标号可以位于对应的goto语句所在函数的任何语句的前面。
标号的作用域是整个函数。C语言笔记2--控制流
- C语言笔记2--控制流
- C语言笔记流程控制
- C语言控制流
- C语言 控制流
- c语言学习笔记-控制流-郝斌老师讲解
- iOS开发学习笔记 2-3 C语言部分 控制流
- 【C语言学习笔记】流程控制
- C语言流程控制之循环笔记
- C语言流程控制之循环笔记
- 004-流程控制-C语言笔记
- C语言学习笔记_4流程控制
- c语言的控制流
- c语言之控制流
- C语言之控制流
- C语言<三>-控制流
- C语言基础.控制流
- C语言-2-流程控制
- C语言笔记2
- php下intval()和(int)转换使用与区别
- Android Data Binding 系列(一) -- 详细介绍与使用
- Unity 3D - 光照计算中的diffuse的计算公式
- 圆形倒计时
- Skype和QQ语音有几个区别
- C语言笔记2--控制流
- Laravel错误与日志处理
- PHP Mysql 用PHP查看mysql数据库所有表名
- TCP/IP详解,卷1:协议,第二章链路层
- Letcode 1.Two Sum
- 项目组J2ee程序员的标志,你中招没 转载+评论
- 【附】Cookie和Session的清除,实现网站的退出功能
- Why writing files from the kernel is bad ?
- java三大特性之多态