4.2.2 if语句的嵌套
在if语句中又包含一个或者多个if语句称为if语句的嵌套。例如:

这里要特别注意if与else的配对关系:else总是和它上面最近的尚未配对的if进行配对。这句话一定要记住,一定要理解好。例如如下代码:

笔者在写上面这段代码时,刻意让第一个else与最上面的if左侧对齐,故意造成视觉上的误会,但实际上,第一个else是和从上往下数第二个if配对的(也就是应该和第二个if左侧对齐)。看看如下范例,注意不要被语句的对齐所迷惑:

上面这段代码,可以加一个{}括起来,让代码看起来更清晰一些,但代码功能丝毫不发生任何改变。调整如下:

所以,如果if与else数目不一致的话,为防止出错,建议增加{}来明确配对关系,这样会使代码看起来清晰易读。例如如下代码:

上面这段代码,因为{}的存在,限定了内嵌if语句的范围,因此此时的else必定会和第一个if配对,而不再和内部的if(第二个if)配对。看看如下范例:

上述范例中,如果让x的初始值为2,则执行结果会有什么变化呢?可以自己测试一下。
必须再次强调,为了防止混乱,也为了其他人能够清晰地阅读自己所写的代码,该加{}的地方一定要加,该缩进的地方也一定要缩进,如if之下的语句都是要有缩进的,可以按Tab键进行缩进,该左侧对齐的地方一定要左侧对齐。下面再提供一个范例,每位读者非常有必要将这些范例逐一练习,这是提高自身编程能力的最好方法,请牢记!
