今天發現一個比較不理解的代碼,是關於else if這個判斷語句的代碼。代碼如下
#include<stdio.h> int a = 2; int main(void) { if(a == 1) { printf("執行的是if(a == 1)\n"); } else if(a != 0) { printf("執行的是else if(a != 0)\n"); } return 0; }
看着很簡單的樣子,其實細看會發現,當a = 1的時候滿足的是第一個條件if(a == 1),但是同時也滿足else if(a != 0)這個條件,程序是否會同時執行兩個程序塊里面的內容呢?經過測試當a = 1的時候,打印出來的也只會是printf("執行的是if(a == 1)\n");也就是說是第一個程序塊里面的內容被執行了,第二個程序塊里面的else if(a != 0)雖然也是滿足條件的但是沒有被執行。這說明在這個if ()———else if()這個結構里面,只會執行其中的一個。如果第一個判斷里面的成立了,那么即使else if()里面的判斷內容也成立了,也是不會被執行的。