分支语句
(1)if
(2)switch
在C语言当中,由一个分号;隔开的就是一条语句.比如:
printf("Hello World!\n");
分支语句就像是选择,不同的选择通往不同的方向,也就产生了不同的分支.先来看if语句的语法结构.
(1)
if(表达式)
语句;
(2)
if(表达式)
语句1;
else
语句2;
(3)
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
如果表达式的结果为真,则语句1执行,否则表达式2执行.
在C语言中,0表示假,非0表示真.(如果表达式的值为0,表示假.如果表达式的值为非0,表示真)
这里要注意,如果if语句后面没有大括号,此时if对应的代码就是紧挨着if语句的下一句.因此,如果我们要执行多条语句,应该使用如下代码块.
#include <stdio.h>
int main(){
if(表达式){
语句列表1;
}
else{
语句列表2;
}
return 0;
}
这里一堆{ }就是一个代码块.
接下来看switch语句
switch语句也是一种分支语句.常常用于分支情况比较多时,比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七
利用前面提到过的if…else if…else if…,我们很容易实现如上的要求,但形式会过于复杂,读程序时也会比较混乱,所以我们就要考虑其他的语法形式,也就是switch语句.
switch(整型表达式){
语句项;
}
其中的语句项就是:
case 整型常量表达式: 语句;
例如
case 1 : printf("星期一\n");
同时还要注意的一点是,在switch语句的使用中,我们无法直接实现分支,必须要搭配break使用,使得程序该结束时就跳出循环,比如下面的例子:
#include <stdio.h>
int main(){
int day = 0;
switch(day){
case 1 :
printf("星期一");
break;
case 2 :
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4 :
printf("星期四");
break;
case 5 :
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期七");
break;
default:
printf("您的输入有误!\n");
break;
}
return 0;
}
switch语句使用时要注意:
1.break不能遗漏;
2.switch填的变量必须是一个整数;(这使其应用场景较少)
3.case语句这里是只能填写一个整型常量.
关于switch语句的使用这里在做一点补充,假如我们该程序的要求变了,要求我们输入1-5输出weekday,而6-7输出weekend.此时我们的代码应该这样写:
#include <stdio.h>
int main(){
int day = 0;
switch(day){
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("您的输入有误!\n");
break;
}
return 0;
}
如果用到我们之前学过的逻辑或(||),这个程序也可以用if…else来实现
if (day == 1 || day == 2 ||day == 3 ||day == 4 ||day == 5){
printf("weekday\n");
}
如果表达的值域与所有的case标签的值都不匹配,所有的语句都会被跳过,程序不会终止也不会报错,这种情况在C语言中并不认为是错误.所以当我们不想忽略不匹配所有标签的表达式的值,我们就要在语句列表中增加一条default子句,当switch表达式的值并不匹配所有case标签的值时,这个default:子句后面的语句就会执行.
因此,在每个switch语句中都放一条default子句是个好习惯,甚至可以在后边加一个break.