今天偶然發現的一個盲點:
對於一個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比較好理解,這里不再贅述。