C語言中的「else懸掛」問題

2021-09-27 10:18:24 字數 850 閱讀 4978

在c語言中,編譯器通常將else與上乙個(最近的)if進行匹配,除非通過花括號來制定匹配關係。看下面乙個例子:

//example 1:    x = 11, y = 9

#include int main()

其輸出為

$$$$$
由於else是與最近的if響匹配,所以上述**實際上與下面的**功能一致:

//example 2:    x = 11, y = 9

#include int main()

printf("$$$$$\n");

}

如若改變x和y的值,如下面所示:

//example 2:    x = 9, y = 11

#include int main()

根據example 2 的分析,不難知道執行結果為:

*****

$$$$$

再接著看下面乙個例子:

//exmaple 3: x = 9, y = 11

#include int main()

else

}

與前面的例子相比,**上唯一區別就是加了兩對花括號「」,而功能上else只與第乙個if相匹配,容易看出,輸出為:

*****
交換x,y的值,x = 11,y = 9,輸出為:

#####

$$$$$

懸掛else引發的問題

cpp view plain copy include intmain 程式的本意是 若x 0,則進行判斷y是否等於0 若x!0,則輸出x 0。所以當x 0,y 1時,程式應該不輸出任何東西。但是執行結果為 x 0 導致這個問題的原因是 else始終與同一括號內最近的未匹配的if結合。要想實現程式的...

C語法陷阱 「懸掛」else引發的問題

一 懸掛 else引發的問題 導論 if與else的匹配問題雖然簡單,但是很容易由於粗心犯一些比較簡單的錯誤。1.舉個例子,想要實現乙個功能 如果a 1且b 1時列印出 a 1,b 1 如果a不等於1則列印出 a 1 則 如下 int a 1 int b 1 if a if b printf a 1...

Python語言中與else有關的

if else語句 和各種語言相同的用法,在條件語句中,與if語句搭配使用的else語句。如果if語句的條件表示式的結果布林值為假,那麼程式將執行else語句後的 它的語法是大家最為熟知的 python if expression expr true suite else expr false su...