C语言——分支语句

一、什么是语句?

C 语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
其中, 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语言有九种控制语句。
可以分为三类:
1. 条件判断语句也叫分支语句: if 语句、 switch 语句;
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。

二、分支语句

2.1 if语句

2.1.1 if语句的语法

说明:

1.当程序使用if时,会先判断if后的表达式为真或者为假,当表达式为真时,会执行后面的语句(if默认跟一条语句);当表达式为假时,则不会执行语句。

2.在C语言中,0表示假,非0表示真。

3.如果条件成立后要执行多行代码,可以用{ }将多行语句包含起来,此时一对{ }就为一个代码块。

2.1.2 悬空else

当你写出了这样的代码,你以为与下面的else匹配的是与之对齐的if,但实际上这是代码欺骗了你

注意:

else的匹配else是和它离的最近的if匹配的。

2.1.3坑题

下面代码执行的结果是:

扫描二维码关注公众号,回复: 16619798 查看本文章

 答案解析:

上述代码本来的想法应该是:循环10次,每次循环时如果i==5则打印i的结果。

但if语句中表达式的==写成了赋值,相当于每次循环尽量都是将i的值设置成了5,5为真,因此每次都会打印5

i每次修改成5打印后,i的值永远不会等于10,因此造成死循环

故:死循环的打印5

2.2 switch语句

2.2.1 switch语句的语法

 其中,( )中的表达式一定要是整形,然后让我们看看什么是语句项

语句项其实就是一些case语句,case后跟的就是整形表达式的值,当你的整形表达式取到几时,系统就会反馈给你特定case后的语句

2.2.2 switch语句中的break

在switch语句中,以下面的代码为例

 这是个语法正确的代码,但是当我们将1赋值给day时, 我们确无法得到理想的结果,如图

其实就好像你在用char定义字符数组:

char arr[ ]={'c','s','d','n'};

系统会一直读直到遇到\0,这同样会让我们打印出不理想的结果,需要我们在最后手动加一个\0

break的作用其实与\0类似,都是终止系统继续读取(2.2.5重点介绍)。所以当我们再每一行的末尾都加上break后,我们就可以得到理想的结果,代码如下:

2.2.3 switch语句中的简化

如果我们想把上面的代码题目改为“如果今天是1-5,则显示weekday;如果今天是6、7,则显示weekend。”我们还需要每行都写一遍吗?其实是可以省略一部分让代码哈更加简略的。

 相当于利用了switch中继续读取的功能,将同类项进行了合并。

2.2.4 default子句

但是如果有人刻意捣乱,给day赋值为比7更大或比1更小的值,系统就出错了吗?我们在这里就可以利用default子句。

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

 2.2.5其他需要注意的地方

1.default子句可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句

2.  switch的每个case之后如果没有加break语句,程序会按照从上到下的顺序执行,包括执行default语句

3.switch语句中case表达式不要求顺序;switch语句中的default子句可以放在任意位置,没有规定case必须在default之前(一般case最好放在default之前)

猜你喜欢

转载自blog.csdn.net/m0_75186846/article/details/131776949