今天发现一个比较不理解的代码,是关于else if这个判断语句的代码。代码如下
#include<stdio.h> int a = 2; int main(void) { if(a == 1) { printf("执行的是if(a == 1) "); } else if(a != 0) { printf("执行的是else if(a != 0) "); } return 0; }
看着很简单的样子,其实细看会发现,当a = 1的时候满足的是第一个条件if(a == 1),但是同时也满足else if(a != 0)这个条件,程序是否会同时执行两个程序块里面的内容呢?经过测试当a = 1的时候,打印出来的也只会是printf("执行的是if(a == 1) ");也就是说是第一个程序块里面的内容被执行了,第二个程序块里面的else if(a != 0)虽然也是满足条件的但是没有被执行。这说明在这个if ()———else if()这个结构里面,只会执行其中的一个。如果第一个判断里面的成立了,那么即使else if()里面的判断内容也成立了,也是不会被执行的。