在编程语言,也包括C语言中,分支语句,也被叫做选择语句是必不可少的,这种语句是为了解决用户在程序选择上的问题而出现的
让我们一起来认识一下在C语言中,分支语句的种种细节吧!
分支语句
分支语句主要可以被分为if语句与switch语句,他们功能相同,在使用条件上稍有不同
if语句
if语句的主要形式有两种,分为单分支和多分支
单分支:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
多分支:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
值得注意的是,这种分支语句,编译器是从上往下匹配的,一旦匹配到某个表达式,就执行其下方的语句
下面会举几个例子,来加强我们对于if分支语句的认识
#include<stdio.h>
int main(){
int a=10;
if(a==10){
printf("hello\n");//hello(因为满足if判断,所以输出hello)
}
}
***********************************
int a = 20;
if(a==10){
printf("hello 1\n");
}
else if(a==20){
printf("hello 2\n");//输出的是hello 2
}
else{
//do nothing (即使只有两个if判断的条件,第三种什么也不做,我们在结尾也尽量加上else,这是一
//种好的编码习惯)
}
***********************************
int a = 10;
if(a==10){
printf("hello 1\n");//输出的是hello 1(因为永远输出先匹配到的那一个,从上往下匹配)
}
else if(a==10){
printf("hello 2\n");
}
else{
//do nothing
}
***********************************
int a = 10;
if(a==10){
printf("hello 1\n");
}
if(a==10){
printf("hello 2\n");
}
//(这种情况下两个语句都输出,结论:当语句中只有if而没有else来说明其为多分支时,每一个if都会被
//检测,条件成立都会被执行,而当存在else时,从上到下检测,一旦有条件成立,就直接停止,不执行后
//面的语句)
int b = 10;
int a = 10;
if(a==10){
printf("hello 1\n");
if(b==10){
printf("hello 2\n");
}
else{
printf("hello 3\n")//当b!=10的时候,会在内层嵌套执行此语句
}
}
//此时程序两个语句也都输出,这是一个嵌套结构,同时满足了两个if,说明if语句是支持嵌套的,可以多
//重嵌套
提醒:1.if语句建议将花括号带上,语法结构会直观很多 2.else永远和最近的if匹配,叫悬垂else问题,遵循临近原则
switch语句
switch语句也是一种分支语句,常用于多分支
下面我们就来介绍下switch语句的具体用法
可以看到的是,上面这个问题也是一个分支语句,但是用if else来进行实现会显得非常冗余,会有不断地if else,造成浪费,这种情况下就更适用于我们的switch语句
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入有误请重新输入\n")
break;
}
return 0; }
还有一种:可以用以判断多个case对应同一个执行语句嗯的
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0; }
以上程序用户即可自行输入day的值,当匹配到对应的case语句时,便会执行case语句
几个关键提醒:
1.switch语句只有判定功能,没有分支功能,需要自行加入break来进行退出;如果没有加入break语句进行退出,那么便会从匹配到的case语句一直执行到break或者程序结束。
2.defult可以放在switch语句中任何位置,但是建议放在最后,指的是当没有匹配到任何case语句中,便会执行default语句
3.switch语句中只能放整型或者整形表达式
4.switch语句同样可以在case内部添加新的switch语句或者if语句