1.回顾根本语法:if-else
首先,大略回顾 if-else 语句的根本语法和逻辑:
if (表达式) 语句1; else 语句2;
if (表达式):表示一个条件,程序将判断表达式的结果是非0值还是0。语句1:如果表达式为非0值,实行语句1。语句2:如果表达式为0,则实行语句2。很多书上把表达式的值说成是true,也对,但这样说,让同学转了过个弯,由于一些情形下,表达式的值不一定是逻辑值,它可能是便是一个详细的数据。比如:if(x+y)。
2.先容嵌套 if-else 的观点
嵌套 if-else 便是在一个 if-else 语句的 语句1 或 语句2 中,再次嵌套另一个 if-else 语句。实例如下:
if (表达式1) {
if (表达式2) 语句A;
else 语句B;
}
else
语句C;
把稳,这里全部的代码便是一条if-else语句,且只有一条语句。在这条嵌套语句中,你把赤色的if-else语句算作是一条语句,为解释方便,我们叫它“语句A_B”。
则全部代码缩减一下便是
if (表达式1)
语句A_B
else
语句C;
看这个是不是基本的if-else语句?以是要实行这条if-else语句(即全体嵌套语句),还是按if-else语句的规则实行,当表达式1的值是非0时,实行“语句A_B”,不实行“语句C“,是0时实行“语句C”,不实行“语句A_B”。
如果在实际过程中,你的表达式1的值真是非0,则实行“语句A_B”,在嵌套if-else语句中,“语句A_B”只不过是if-else语句而已,你要实行它,就按if-else语句规则实行而已。
3 实例if (x > 0) { if (x > 10) { if (x > 20) printf("x is greater than 20\n"); else printf("x is between 11 and 20\n"); } else { printf("x is between 1 and 10\n"); }} else { printf("x is non-positive\n");}
在这个实例中,别看有这么多代码,它全部放在一起便是一条if-else语句,这条if-else语句中,第2到第9行也是一条if-else语句,如果我们把第2到第9行的if-else语句称为”语句1“,那么上述的全部代码就可以算作是:
if (x > 0) {
语句1
else {
printf(x is non-positive\n");
}"
这样的话,你就可以很随意马虎地知道整条语句如何实行,便是如果x的值真小于即是0,语句1全体不实行,实行printf("x is non-positive\n");,此时,全部的1-12行的代码就实行完了。
如果x的值真的大于0,则实行语句1,else后面的语句不实行。由于要实行语句1,而语句1只不过是一条if-else语句而已,既然要实行它,那就用实行if-else语句的规则把它实行就行了。实行完语句1后,全体1-12行的代码就实行完了。就这么大略!
例如在上述代码中,如果x的值是8,则实行语句1,由于语句1是一条if-else语句,这条语句是:
if (x > 10) { if (x > 20) printf("x is greater than 20\n"); else printf("x is between 11 and 20\n"); } else { printf("x is between 1 and 10\n"); }
我们再按if-else语句的规则去把这条语句实行完,全体1-12行的代码就实行完成了。现在要实行这条if-else语句,由于2-5行是一条if-else语句,而x的值为8,表达式x>10的值为0,以是实行printf("x is between 1 and 10\n");,而不实行2-5行(一条if-else语句),语句1至此实行完。
从前面的全部代码1-12行来看,语句1实行完,便是全体代码实行完,即1-12行这条if-else语句实行完。
4.总结嵌套 if-else 语句的实行顺序通过以上示例,可以清楚地看到:
嵌套的 if-else 语句只不过是在if语句或if-else语句的基本语法中,语句1或语句2是if语句或if-else语句而已。如果你能清楚地把if-else语句找出来,当成一个根本的语句去理解,就非常清楚嵌套if-else语句的实行过程。5.与根本 if-else 语句的关系嵌套 if-else 实际上是将根本的 if-else 语句嵌套在其他条件块中,通过逐层判断的办法办理繁芜的逻辑。虽然根本 if-else 语句只判断一个条件,但嵌套构造可以处理多个条件之间的繁芜关系,但主要的是从最高层理解,全体嵌套的if-else只算成C措辞中的一条语句,在实行时,根据根本规则实行即可。
如果你要用if-else进行多分类,比如根据成绩评定“优、良、中、及格和不及格“等,规则是用if判断个中一个类,如这里用if后的语句处理“优“,再用else去处理其它所有类,这里即“良、中、及格和不及格“。这里便是在else后面用一条if-else语句,让它去处理“良、中、及格和不及格“。在处理“良、中、及格和不及格“时,也是按照if先处理它当中的一类,如这里处理”良“,然后在else后面加一条if-else语句处理“中、及格和不及格“。这便是一贯嵌套的问题。
#include <stdio.h>int main() { int score; // 输入成绩 printf("请输入成绩(0-100之间的整数):"); scanf("%d", &score); // 判断成绩并评定等级 if (score >= 90) { printf("等级:优\n"); } else { if (score >= 80) { printf("等级:良\n"); } else { if (score >= 70) { printf("等级:中\n"); } else { if (score >= 60) { printf("等级:及格\n"); } else { printf("等级:不及格\n"); } } } } return 0;}
从上述代码可以看到14-26行便是处理完”优“后,处理其它类的一条if-else语句。这条语句是作为第13行else后面的一条语句利用的。在14-26行的这条if-else语句中,在if后处理”良“这个类,else后面的17-24行处理其它类,17-24行也是一条if-else语句。
总之,按照语句去理解这些繁芜的形式比用一些噜苏规则去理解要随意马虎且清晰得多!