一、什么是语句?
二、分支语句
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坑题
下面代码执行的结果是:
答案解析:
上述代码本来的想法应该是:循环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之前)