《C程序设计语言》学习笔记——控制流

控制流

程序语言中的控制流语句用于控制个计算操作执行的次序。

语句与程序块

表达式只会加上一个分号( ; )就变成了语句。

用一对花括号“{” 与 “}” 把一组声明和语句括在一起就构成了一个复合语句(也叫做 程序块),复合语句在语法上等价与单条语句。

右花括号用于结束程序块,其后不需要分号。

if-else 语句

用于条件判定。

if (表达式)
	语句1
else
	语句2
if (表达式)
	// 等价于
if (表达式 != 0)

else-if 语句

语句结构

if (表达式)
	语句
else if (表达式)
	语句
else if (表达式)
	语句
else
编写多路判定的常用方法。

各表达式将被依次求值,一旦某个表达式结果为真,则执行与之相关的语句,并终止整个语句序列的执行。

各语句既可以是单条语句,也可以是用花括号括住的复合语句。

最后一个else部分用于处理“上述条件均不成立”的情况或默认情况,也就是当上面各条都不满足时的情形。

switch语句

多路判定语句,它测试表达式是否与一下常量整数数值中的某一个值匹配,并执行相应的分支动作。

switch (表达式)
{
	case 常量表达式:语句序列
	case 常量表达式:语句序列
	default: 语句序列
}
每一个分支都由一个或多个整数值常量或常量表达式标记。

如果某个分支与表达式的值匹配,则从该分支开始执行。

各分支表达式必须互不相同。

如果没有哪一分支匹配表达式,则执行标记为 default 的分支。

default 分支是可选的。

如果没有default 分支也没有其他分支与表达式的值匹配,则该 switch 语句不执行任何动作。

各分支及default分支的排列次序是任意的。

while循环与for循环

while循环语句

while(表达式)
	语句
首先求表达式的值。

如果其值为真非0,则执行语句,并再次求该表达式的值。

循环过程一直进行下去,直到该表达式的值为假(0)为止,随后继续执行语句后面的部分。

for循环语句

for(表达式1; 表达式2; 表达式2)
	语句

// 等价与于

表达式1;
while(表达式2)
{
	语句
	表达式3;
}
当 while 或 for 循环语句中包含 continue语句时,上述二者之间就不一定等价了。

逗号表达式是一个整体,每个部分用逗号分隔。

按从左到右对每个分隔部分求值。

表达式整体的类型和值是最右边部分的类型和值。

函数的形参列表和实参,不属于逗号表达式的范畴。不保证多个传参按从左到右求值。

do-while循环

语法:

do
	语句
while (表达式);
先执行循环体重的语句部分,然后再求表达式的值。
如果表达式的值为真,则再次执行语句,依次类推。
当表达式的值变为假,则循环终止。

break语句与continue语句

break语句可用于从 for、while与do-while等循环中提前退出,就如同从switch语句中提前退出一样。
break语句能使程序从switch语句或最内层循环中立即跳出。

trim函数: 删除字符串尾部的空格符、制表符与换行符。
strlen函数返回字符串的长度。

continue语句用于使for、while或 do-while语句开始下一次循环的执行。
在while 与 do-while 语句中,continue语句的执行意味着立即执行测试部分;
在for循环中,则意味着使控制转移到递增循环变量部分。
continue 语句只用于循环语句,不用于switch语句。

goto语句与标号

C语言提供了可随意滥用的goto语句已经标记跳转位置的标号。

// labels的作用域是所在函数,goto&labels提供的是函数内跳转
	for (i = 0; i < n; i++)
		for (j = 0; j < m; j++)
			if (a[i] == b[j])
				goto found;
	/* 没有找到任何相同元素 */
	...
	found:
		/* 找到一个相同元素: a[i] == b[j] */
标号的命名同变量命名的形式相同,标号后紧跟一个冒号。
标号的作用域是整个函数。
用于函数内跳转。

学习资料:

C程序设计语言  (第2版 * 新版)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值