? ? ? ? 分支语句包括if,if? else,switch三种语句,这些语句都支持互相嵌套使用。
????????在C语言中,表达式的结果有两种,一种是为真,也就是为非0;一种是为假,也就是为0。
那么什么时候表达式为真,什么时候为假呢?其实很简单。
看下面的例子(为真的情况)
表达式number == 25显然为真,则打印的值默认为1
(为假的情况)
表达式number == 20显然为假,则打印的值为0
if (表达式)
语句;
如果表达式的结果为真,则执行语句;为假,则不执行语句。
注意:if后面只能对应执行一条语句,如果想执行多条语句,需要把语句写在大括号内。
if (表达式)
{
语句1;
语句2;
}
if (表达式)
语句1;
else
语句2;
如果表达式的结果为真, 则执行语句1;为假,则执行语句2。
当然想在分支后执行多条语句时,需要把语句写在大括号内。
if (表达式)
{
语句1;
语句2;
}
else
{
语句3;
语句4;
}
注意: if后面是与最近的else结合成为if? else语句的,下面看代码并分析结果:
#include <stdio.h>
int main()
{
int number = 25;
if (number == 20)
if (number == 25)
printf("haha");
else
printf("hehe");
return 0;
}
(可以先自己分析,之后再往下看,如果实在分析不出来也可以再往下看)
首先看表达式number == 20,显然是假的(也可以说不成立),那就不再执行第2个if语句了,而在第2个if语句后面是跟了一条else语句的(虽然没有对齐),所以组成了if? else语句,所以if? else语句都是不执行的,结果是什么也不打印。
if (表达式1)
{
语句1;
语句2;
}
else if (表达式2)
{
语句3;
语句4;
}
...
else
{
语句5;
语句6;
}
?如果表达式1为真,则执行语句1、语句2;为假,则判断表达式2是否为真,若为真,则执行语句3、语句4;为假,以此类推,最后若为假,执行语句5、语句6。
switch (整形表达式)
{
case 整形常量表达式1:
语句1;
case 整形常量表达式2:
语句2;
...
default:
语句3;
}
如果整形表达式的结果为真, 则执行switch语句里面的case语句或default语句;为假,则不执行switch里面的语句。
1.case语句
整形常量表达式如果等于整形表达式,则会从对应的这个case语句开始执行,到default语句前结束。
2.default语句(可以写在任意位置但不能影响整体的case逻辑)
如果所有的整形常量表达式都不等于整形表达式,则只执行default语句。
比如:输入一个数(1~7),判断今天是星期几(今天如果星期一就输入“1”)
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);//接收输入的数
switch (day)//表达式结果为day本身,则输入几则执行对应case语句
{
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://输入数字没有在1 到 7之间执行此语句
printf("输入错误\n");
}
return 0;
}
注意:其中break的含义是跳过后面所有语句(只针对switch内的语句),执行一个case语句后便不再执行。(而continue只在循环里用到,分支语句不可用)
输入3,则会输出“今天星期三”