众所周知,C语言作为一门结构化的程序设计语言,共支持顺序、选择与循环三种结构,而分支语句便属于其中的选择结构。分支语句主要有if语句和switch语句。接下来便对这两种分支语句作大致的解释与分析。
if语句
if
if语句的语法格式:
if (表达式)
语句
C语言中0为假,非0为真。表达式成立(结果为非0),表示为真,语句执行;表达式不成立(结果为0),则表示为假,语句不执行。
比如可以通过if判断输入的整数是否为偶数:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n % 2 == 0)
printf("%d为偶数!", n);
return 0;
}
else
如果不是偶数,输入为奇数,此时可以使用else,清楚的表示输入的数的奇偶:
else
printf("%d为奇数!", n");
而if与else都默认只能执行其后的一条语句,因此如果要同时执行多条,可以使用大括号将多条语句放到一起:
if (表达式)
{
语句1
语句2
}
else
{
语句3
语句4
}
if语句嵌套
在 if…else… 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。
if(表达式1)
语句1
else if (表达式2)
语句2
else
语句3
通过if语句嵌套便可实现更为复杂的逻辑判断。
悬空if问题
若有多个if和else,此时应记住一个规则,else总是与其最接近的if匹配。
例如:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
此时上述代码什么都不会打印,可以将if语句看成这样:
if(a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
若要解决这样的问题,按照所想的打印,可以这样修改:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
printf("haha\n");
return 0;
}
可见,在C语言中好的代码格式可以提高可读性。
switch语句
switch
switch语句是一种特殊的if…else…语句,可以用于判断条件存在多个结果的情况。
基本语法格式为:
switch (整型表达式)
{
case value1:
语句1
break;
case value2:
语句2
break;
default:
语句3
break;
}
switch语句中,根据整型表达式不同的值,执行相应value值的case分支,而value值必须是整型常量表达式。
default
default分支则用于执行case中没有对应值的情况,可以根据需求进行添加与否。而default分支不一定要放到最后,可以根据实际需求放到特定位置。
break
因为switch语句中在不存在break的情况下会根据跳转的case执行接下来的所有语句:
int x = 2
switch (x)
{
case 1:
printf("hehe");
case 2:
printf("haha");
case 3:
printf("xixi")
}
此时上述代码会打印出:hahaxixi,所以根据情况使用break语句可以选定跳出switch语句。