if()//first if
{
if()//second if
statement;
}
else
statement;
我知道else
比賽與第一if
但我的問題是爲什麼呢?我覺得像這樣,第一if
和else
在同一個範圍(主本地範圍爲例)和第二個if
是否在else
沒有可見性的地方範圍內?這是正確的嗎?複合IF語句範圍
if()//first if
{
if()//second if
statement;
}
else
statement;
我知道else
比賽與第一if
但我的問題是爲什麼呢?我覺得像這樣,第一if
和else
在同一個範圍(主本地範圍爲例)和第二個if
是否在else
沒有可見性的地方範圍內?這是正確的嗎?複合IF語句範圍
的if....else
基本語法是:
--optional-
if(expr) stmt [else stmt]
,如果你只是有你的例子減去他們倒是窩這樣的括號:
---------stmt----------
if(expr) if(expr) stmt else stmt
基本意思是else
獲取與約束最近可用的if
, 以及外部if
的語法得到滿足,因爲內部if...else
是語句
添加括號給出(具有所示再次第一整體語法):
if(expr) stmt [else stmt]
--compound-stmt--
if(expr) { if(expr) stmt } else stmt
在這裏,那麼內if(expr)
..stmt封入複合語句(這是一個陳述的subvariety)內部,並且最近仍然開放(閱讀:範圍內)if
是第一個。您還可以查看複合語句的結尾 - 即關閉大括號 - 關閉所有包含的語法結構。
沒有compound if
,只有if
控制複合語句。
的語法去如下:
'if' '(' <condition> ')' <statement-1> [ 'else' <statement-2> ]
存在一個跟隨if
一個語句,下面的可選else
一個聲明。每條語句可以是塊語句,在這種情況下,您必須將它括在一對大括號中。
既然你確實有花括號,嵌套if
是一個<statement-1>
在上面的語法;因此,else
屬於外部if
。
請注意,如果您刪除大括號,else
將屬於內部if
。
原因else
匹配的第一個if
是因爲你迫使它與{
和}
什麼{
和}
做的就是他們採取的任何數量的報表,並把它變成一個代碼「塊」 ,這是由控制語句(如if
)類似一個語句
處理,如果你的代碼並沒有把第二個if語句到像下面
塊那麼else
實際上對應第二if
「我知道,其他人匹配的第一個,如果但我的問題是爲什麼呢?」
爲什麼它這樣設計的?
所以,有可能是語句是這樣的:
if (istrue)
if (thatstrue) dosomething();
else donothing2();
else donothing1();
沒有以其他方式寫括號,就像這樣:
if (istrue){
if (thatstrue) dosomething();
else donothing2();
} else donothing1();
還要注意的是黏合無關 - 它並不影響執行語句else
。
你的解釋聽起來很正確 - 你在問什麼? –
'else'匹配最後的'if'語句,不包括用括號括起來的語句(在更局部的範圍內)。所以是的,這是正確的 – tay10r
@TaylorFlores我知道我已經寫了大量的代碼作爲一名大學生,但是當我問教授這樣的問題時,他們回答說:「如果if語句中有if語句,那麼它對於塊之外的其他東西「。我希望在這裏得到更好的解釋。 – user1478167