关于if与else以及else if的一个注意点

今天偶然发现的一个盲点:

对于一个if语句,多个else if语句,只要第一个if条件成立,以下的else if语句或是else语句都不会再执行(不管满足或是不满足);

而对于多个if语句,语句最后的else语句是会执行的(不管前面的if语句是否满足)else只会与最近的if相匹配。

这里给出一段代码

#include <stdio.h>
int main()
{
    int i=2;
    if(i!=1)  printf("0");
    if(i==1)  printf("0");
    else printf("0");
 } 

按照我之前的想法,两个if条件符合第一个,肯定只会输出一个0,但是实际结果输出的是两个0。

原因在于,else只会与最近的if匹配,也是与判断i==1的那个if匹配,如果这个if不成立,那么会打印一个0,而第一个if条件已经打印了一个0,故总共打印了2个0.

else if比较好理解,这里不再赘述。

人生如逆旅,我亦是行人
原文地址:https://www.cnblogs.com/sz2003/p/14045200.html