从单片机基础到程序框架(全集 2019pdf版).pdf - 第190页
开始,往下 逐个判断, 然后到中间 的 else if,只 要发现一个 条件满足 ,就执行 该条件后面的 大括号内的 代 码, 之后就 马上 结束整 个组 合判 断语句 ,不 再判断 剩余 的组 合判断 语句 。但是 ,如 果万 一前面 第一 个 if 和 中间 所有的 else if 的条 件都不 满足 而为 假, 因为 此时 没有 else 语句 ,就意 味着 整个 组合 判断语 句都 没有 条件满足, 因此就没有相 关满足的代码 …

{
语句 1;
}
else if(条件 2) //else if 只能出现中间或最后,可以出现多次
{
语句 2;
}
...
else if(条件 N) //else if 只能出现中间或最后,可以出现多次
{
语句 N;
}
else //else 只能出现最后,并且也只能出现一次。
{
语句 N+1;
}
语句 N+2;
这类语句的书写特点是:第一行是 if 开始,最后一行以 else 结束,中间是 N 个 else if 判断语句。
这类语句的执行顺序是:跟第一种“二选一”对比,判断顺序和规律大致也是一样的,也是从第一个 if
开始,往下逐个判断,然后到中间的 else if,只要发现一个条件满足,就执行该条件后面的大括号内的代
码,之后就马上结束整个组合判断语句,不再判断剩下的组合判断语句。但是,如果万一前面第一个 if 和
中间所有的 else if 的条件都不满足而为假,就直接执行最后一个 else 大括号内的语句。所以叫“多选一”,
在“第一个 if、中间的 else if、最后一个 else”之间多选一。
【45.4 多选一或者什么都不选的组合判断。】
最后讲第三种书写格式的“多选一或者什么都不选”,这种书写格式,跟第二种对比,只有第一个 if 和
其它的 else if 语句,没有最后那个 else 语句。书写格式如下:
if(条件 1) //if 只能出现第一个条件,并且只能出现一次
{
语句 1;
}
else if(条件 2) //else if 只能出现中间或最后,可以出现多次
{
语句 2;
}
...
else if(条件 N) //else if 只能出现中间或最后,可以出现多次
{
语句 N;
}
语句 N+1;
这类语句的书写特点是:第一行是 if 开始,中间是 N 个 else if 判断语句,没有最后一个 else 语句。
这类语句的执行顺序是:跟第二种“多选一”对比,判断顺序和规律大致也是一样的,也是从第一个 if

开始,往下逐个判断,然后到中间的 else if,只要发现一个条件满足,就执行该条件后面的大括号内的代
码,之后就马上结束整个组合判断语句,不再判断剩余的组合判断语句。但是,如果万一前面第一个 if 和
中间所有的 else if 的条件都不满足而为假,因为此时没有 else 语句,就意味着整个组合判断语句都没有
条件满足,因此就没有相关满足的代码被执行到。所以把这种情况称为“多选一或者什么都不选”。
【45.5 例程练习和分析。】
现在编写一个实验程序。
程序代码如下:
/*---C 语言学习区域的开始。-----------------------------------------------*/
//x 这个变量作为条件判断的变量
unsigned char x=5;
//a,b,c 这 3 个变量作为输出判断结果,0 代表什么语句都没执行,1 代表执行了语句 1,
//2 代表执行语句 2,3 代表执行语句 3。
unsigned char a=0;
unsigned char b=0;
unsigned char c=0;
void main() //主函数
{
//第一种“二选一”
if(x>6)
{
a=1; //1 代表执行了“语句 1”
}
else
{
a=2; //2 代表执行了“语句 2”
}
//第二种“多选一”
if(x>6)
{
b=1; //1 代表执行了“语句 1”
}
else if(7==x)
{
b=2; //2 代表执行了“语句 2”
}
else

{
b=3; //3 代表执行了“语句 3”
}
//第三种“多选一或者什么都不选”
if(x>6)
{
c=1; //1 代表执行了“语句 1”
}
else if(7==x)
{
c=2; //2 代表执行了“语句 2”
}
else if(8==x)
{
c=3; //3 代表执行了“语句 3”
}
View(a); //把第 1 个数 a 发送到电脑端的串口助手软件上观察。
View(b); //把第 2 个数 b 发送到电脑端的串口助手软件上观察。
View(c); //把第 3 个数 c 发送到电脑端的串口助手软件上观察。
while(1)
{
}
}
/*---C 语言学习区域的结束。-----------------------------------------------*/
在电脑串口助手软件上观察到的程序执行现象如下:
开始...
第 1 个数
十进制:2
十六进制:2
二进制:10
第 2 个数
十进制:3
十六进制:3
二进制:11
第 3 个数
十进制:0